오늘 배운 내용 📚
express에 유효성검사를 할 수 있는 모듈이 존재하는지 처음 알았습니다. 항상 유효성검사를 콜백함수 안에서 진행했었는데 express-validator를 이용하여 미들웨어 쪽으로 코드를 옮기니 콜백함수에 들어가는 코드들이 많이 줄어들어서 간편해졌다고 생각을 했습니다.
mysql2에 대한 궁금증도 생겨났습니다. 왜 똑같은 mysql2를 사용하는데 conn.query(sql, data, callback)을 하면 callback 함수 안의 매개변수들이 작동을 하지 않을까?를 생각하게 되었습니다.
const mysql = require("mysql2");
const conn = mysql
.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "Youtube",
dateStrings: true
})
.promise();
module.exports = conn;
기본적인 mysql2 모듈은 이렇게 작성을 하였는데 강사님과 차이가 뭘까 생각을 했습니다.
const mysql = require("mysql2");
const conn = mysql
.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "Youtube",
dateStrings: true
})
module.exports = conn;
위 두 코드를 비교했을 때 차이가 보이시나요? 차이는 바로. promise()였습니다. 이 함수를 conn에 적용을 함으로써 비동기처리를 해주어 코드 안에서 데이터 처리가 달라져 값이 안 나오는 것 같았습니다. 그렇다면 각 장점은 무엇이 있을까요?
첫 번째 코드는 비동기 처리를 하기 때문에 async/await을 통해서 비동기처리를 하여 필요할 때만 동작하게 하는 것입니다. 그렇게 되면 콜백함수를 사용하지 않아도 되기 때문에 조금 더 코드가 깔끔해질 수 있습니다. 또한 try... catch문을 통해 에러핸들링이 가능합니다.
두 번째 코드 제가 생각했을 때 두번째 코드의 장점은 콜백함수 안에 존재하기 때문에 언제 어느 sql을 가지고 어떤 값을 넣었고 그로 인한 결과가 이것이다라는 흐름을 파악하는데 편한 것 같습니다.
이렇게 궁금증 해결도 하다 보니 점점 더 재미있어지는 것 같습니다.
'프로그래머스 데브코스 > TIL' 카테고리의 다른 글
[Day 31] 웹 풀사이클 데브코스 TIL (0) | 2023.12.27 |
---|---|
[Day 30] 웹 풀사이클 데브코스 TIL (0) | 2023.12.25 |
[Day 28] 웹 풀사이클 데브코스 TIL (0) | 2023.12.21 |
[Day 27] 웹 풀사이클 데브코스 TIL (0) | 2023.12.20 |
[Day 26] 웹 풀사이클 데브코스 TIL (0) | 2023.12.19 |