기본적인 코드
mysql파일 코드이다.
const mysql = require("mysql");//npm i mysql
const sql = require("./script");//스크립트 파일은 mysql script내용들이 들어가 있다.
//pool 생성 (상세 설명은 생략하겠다...)
const pool = mysql.createPool({
connectionLimit: process.env.MYSQL_LIMIT,
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
user: process.env.MYSQL_USER_NAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DB,
});
//쿼리 실행을 비동기로 처리하기 위해서 async로 함수를 만들고, 쿼리 실행 결과를 전달하기 위해서 promise를 사용.
const query = async (alias, values) => {
return new Promise((resolve, reject) =>
//scrupt에 있는 쿼리에 할당된 오브젝트 키명을 파라미터로 전달 하면 pool.query()함수에서 첫 번째 파라미터(sql[alias])로 script파일에서 전달된 키명에 해당하는 쿼리를 가져온다.
pool.query(sql[alias], values, (error, result) => {
if (error) {
console.log(error);
reject({
error,
});
} else resolve(result);
})
);
};
module.exports = {
query,
};
script파일을 작성해 보자
const getAllPostsQuery = `SELECT
*
from
POSTS`;
const insertPostQuery = `INSERT
INTO
POSTS
SET ?`;
module.exports = { getAllPostsQuery, insertPostQuery };
? <- 물음표는 사용자가 전송한 데이터가 요브젝트형인 경우에는 각 key를 컬럼명, value을 컬럼에 들어갈 값으로 변환하게 된다.
{
"user":"유저"
"password":"비밀번호"
"title":"제목"
"content":"내용"
}
INSERT
INTO
POSTS
SET
USER = "유저", password = "비밀번호",title ="제목", contnet = "내용"
요렇게 들어간다.
그리고
controller.js
const mysql = require("/mysql") //상위 mysql 폴더 파일을 지정
const getAllPosts = asyncWrapper(async (req, res, next) => {
const allPosts = await mysql.query("getAllPostsQuery");
console.log(allPosts);
if (!allPosts) {
return next(res.status(200).json({ msg: "게시글이 없습니다." }));
}
res.status(200).json({ allPosts });
});
const createPost = asyncWrapper(async (req, res, next) => {
let { user, title, password, content } = req.body;
if (!user) {
return next(res.status(400).json({ msg: "사용자를 입력해주세요." }));
} else if (!title) {
return next(res.status(400).json({ msg: "사용자를 입력해주세요." }));
} else if (!password) {
return next(res.status(400).json({ msg: "사용자를 입력해주세요." }));
} else if (!content) {
return next(res.status(400).json({ msg: "사용자를 입력해주세요." }));
}
const result = await mysql.query("insertPostQuery", req.body);
res.status(200).json({ result });
});
요렇게 하면 mysql이 조회되고 생성되는 것을 볼수가 있다.