Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ์ค๋ธ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋ฐ
- ์นํผ๋ธ๋ฆฌ์ฑ
- css
- ์ํ
- ์ฑ
- ๋ ์
- ๋ฐ์ํ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ๊ฐ๋ฐ
- html
- ์ค๋ผํด
- JavaScript
- K๋ฐฐํฐ๋ฆฌ
- database
- ์๋ฐ
- ๋ผํ๋ผ์ค์๋ง๋
- ComputerScience
- ์ฝ๋ฉ
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- ํ์ด์ฌ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์ปดํจํฐ๊ณผํ
- Java
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Python
- ๋ฆฌ์กํธ
Archives
- Today
- Total
JiYoung Dev ๐ฅ
[Node.js] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ (2023.07.06 ~ 07) ๋ณธ๋ฌธ
full stack/Back-End
[Node.js] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ (2023.07.06 ~ 07)
Shinjio 2023. 7. 6. 13:50DB์ฐ๋ํ๊ธฐ
๋ ธ๋์์ ์ฌ์ฉํ๋ ํ ํ๋ฆฟ ์์ง : nunjucks
html ์์์ ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์
npm install nunjucks
nunjucks ์ค์น ํ ๊ฒฝ๋ก์ ํ์ ์ค์
nunjucks๋ ํ์ฅ์ html ๊ทธ๋๋ก ์ฌ์ฉ๊ฐ๋ฅ
//nunjucks ํ์ฉ์ ์ํ ์ค์
//html ๋ฌธ์ ๊ฒฝ๋ก, ํ์
//1. views ๊ฐ ์ค์ : view๋ฅผ ์ ์ฅํ๊ณ ์๋ ํด๋์ ๊ฒฝ๋ก
app.set("views", __dirname + "/views");
//2.view engine : ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ํ์
app.set("view engine", "html");
//nunjucks ์ค์
nunjucks.configure("views", {
express: app, //app(express) ๊ฐ์ฒด ์ฐ๊ฒฐ
watch: true, //html ํ์ผ์ด ์ ๋๋ก ์ฐ๊ฒฐ๋๋ฉด ํ
ํ๋ฆฟ ์์ง์ ๋ ๋๋งํ๊ฒ ๋ค๋ ์๋ฏธ
});
mySQL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm install mysql2
mysql vs mysql2
mysql2 ๋ promises ํํ -> ๋น๋๊ธฐ ๋ฐฉ์ ์์ฑ์ด ์ฌ์์ง
mysql์ promiseํํ๋ฅผ ์ง์ํ๊ณ ์์ง ์์
db ์ค์ ์ ๋ณด ํ์ผ ์์ฑ
//mySQL ์ฐ๋
//mysql2 : promises ์ฌ์ฉ์ด ๊ฐ๋ฅํ ํํ
const mysql = require("mysql2");
const db_info = {
host: "localhost",
port: "3306",
user: "",
password: "",
database: "boot",
};
//์ค์ ๋ค์ app, router์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ด๋ณด๋ด์ผ ํจ
//์ค์ DB์ ์ฐ๊ฒฐ -> ํจ์๋ก ์ ์ -> ํจ์ ์์ฒด๋ฅผ ๋ด๋ณด๋ผ ์์
//์ด๊ธฐํ, ์ฐ๊ฒฐ -> 2๊ฐ์ ํจ์ ์์ฑ
module.exports = {
init: function () {
//db_info๋ก ์ฐ๊ฒฐ ๊ฐ์ฒด(connection) ์์ฑ, ๋ฐํ
//mysql12์์ ์ฐ๊ฒฐ ๊ฐ์ฒด ์์ฑ ๊ฐ๋ฅ
return mysql.createConnection(db_info);
},
connect: function (conn) {
//mysql ์๋ฒ์ ์ฐ๊ฒฐํด์ฃผ๋ ํจ์, conn -> ์ฐ๊ฒฐ ๊ฐ์ฒด
conn.connect(function (err) {
if (err) console.log("์ฐ๊ฒฐ ์คํจ !" + err);
else console.log("์ฐ๊ฒฐ ์ฑ๊ณต !");
});
},
};
index.js(Router)์์ ์ฌ์ฉ!
const express = require("express");
const db = require("../config/database");
const router = express.Router();
const conn = db.init(); //์ฐ๊ฒฐ ๊ฐ์ฒด ์์ฑ ํ ๋ฐํ
db.connect(conn); //์ค์ db ์ฐ๊ฒฐ
//member ํ
์ด๋ธ ์ ์ฒด ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
router.get("/select", (req, res) => {
//db์ ์๋ ๊ฐ์ ๊ณ์ ๋ฌ๋ผ์ง๊ณ ๊ทธ ๊ฐ์ html์ ๋ฐ์ํด์ผ ํ๋ฏ๋ก
//sendFile ์ฌ์ฉ ๋ถ๊ฐ
//ํ๋ฉด์ ๊ณ์ ๋ ๋๋งํด์ค์ผ ํจ -> render('html๊ฒฝ๋ก',)
//์คํํ sql๋ฌธ ์ ์
let sql = "select * from member";
//query(sql, ๊ฒฐ๊ณผ์ฒ๋ฆฌํจ์)
// err-์ค๋ฅ, rows-select๊ฒฐ๊ณผ ๋ฐ์ดํฐ, fields - ๊ฒฐ๊ณผ ์ธ ๋ฉํ๋ฐ์ดํฐ
conn.query(sql, function (err, rows, fields) {
// console.log(err);
// console.log(rows);
// console.log(fields);
// ๊ฒฐ๊ณผ rows ๋ณด์ฌ์ฃผ๊ธฐ
//ํ
ํ๋ฆฟ ์์ง : html ์์(ํ
ํ๋ฆฟ) + ๋ฐ์ดํฐ -> ๊ฒฐ๊ณผ ๋ฌธ์(nunjucks)
// -> ๊ฐ์ง๊ณ ์จ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด์ ํ๋ฉด ๋ ๋๋ง
res.render("index", {
//key๊ฐ : ์ค์ value(๋ฐ์ดํฐ)
list: rows,
});
}); //sql๋ฌธ ์คํ
});
module.exports = router;
redirect ํน์ง
์๋ฒ ์ฐจ์์์ ํ์ด์ง ์ด๋ > forwarding > ์ฃผ์์ฐฝ์ ์ต์ข ์ ์ผ๋ก ์ด๋๋ก ์ด๋ํ๋์ง ์ ์ ์์
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์์ฒญํ๋๋ก ๋ช ๋ น > ํด๋ผ์ด์ธํธ๋ ์ค์ ๋ก ์์ฒญ์ ํจ (์์ฒญ 2๋ฒ, ์๋ต 2๋ฒ)
'full stack > Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] nunjucks (2023.07.12) (0) | 2023.07.12 |
---|---|
[Node.js] Socket ํต์ (2023.07.10) (0) | 2023.07.10 |
[Node.js] ์ฟ ํค/์ธ์ (2023.07.06 ~ 07) (0) | 2023.07.06 |
[Node.js] Express ์ฌ์ฉํ๊ธฐ (2023.07.05) (0) | 2023.07.05 |
[Spring Boot] Spring Boot ์ฌ์ฉํ๊ธฐ (2023.06.07) (0) | 2023.06.07 |