티스토리 뷰
오늘은 저번시간에 이어서 콜백지옥 탈출하는 법을 살펴보겠습니다.
저번에는 기본 내장 모듈으로만 탈출했습니다.
오늘은 mysql2를 이용해서 async await를 사용하겠습니다.
아래는 최근(현시점) mysql과 mysql2의 다운로드 숫자입니다.
mysql2도 mysql만큼이나 사용자가 많은 것을 알 수 있습니다.
asyn await을 사용하지 않는다면 기본적인 문법은 mysql2도 mysql과 같습니다.
정말인가? 하시는 분들은
npm install mysql2 로 설치하시고
var mysql = require("mysql"); => var mysql = require("mysql2");
해보시면 됩니다.
이제 async await를 사용해보겠습니다.
async function main() {
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({host:'localhost', user: 'root', database: 'test'});
const [rows, fields] = await connection.execute("SELECT FROM users");
console.log(rows);
}
main();
이렇게 하면 기존에 하던 것 처럼 출력이 됩니다.
그런데 이렇게 하면 mysql.createConnection을 매번 해줘야 합니다.
그래서 pool 방법을 소개하겠습니다.
pool.js
const mysql = require("mysql2");
const dbsecret = require("../config/db.json"); //git에 올릴 때 비밀번호가 유출되지 않게 하기 위해
const pool = mysql.createPool(
dbsecret //db.json이라는 파일에서 mysql 정보를 가져옵니다.
);
const promisePool = pool.promise();
module.exports = promisePool;
ex.js
const express = require("express");
const router = express.Router();
const pool = require("../lib/pool");
router.get("/all", async (req, res) => {
const [postList, fields] = await pool.query(
"SELECT post.id, title, category_id, users.displayName as user_displayName, view, comment, date_format(modified, '%Y-%m-%d') as modified FROM post JOIN users ON user_id=users.id order by id desc LIMIT 10"
);
const [postCount, fields2] = await pool.query(
"SELECT sum(post1Count+post2Count) as postCount FROM counting WHERE id=1"
);
res.json({ postList, postCount });
});
query문의 내용은 몰라도 괜찮습니다. 이렇게 하면 간단하게 콜백지옥을 해결할 수 있습니다.
글 읽어주셔서 감사합니다.
'자바스크립트' 카테고리의 다른 글
자바스크립트 var, let, const (0) | 2020.06.25 |
---|---|
자바스크립트(javascript) Date 함수 사용법 (0) | 2020.06.24 |
nodejs express mysql 콜백지옥 탈출하기(promise async await) (0) | 2020.05.27 |
async await 사용법 (0) | 2020.05.27 |
promise 사용법 (0) | 2020.05.17 |