import mysql from "mysql";
const dbconfig = {
host : 'localhost', // dummy
user : 'me', // dummy
password : 'secret', // dummy
database : 'my_db' // dummy
}
const connection = mysql.createConnection(dbconfig);
connection.connect(error => {
if (error) throw error;
console.log('Connected to the database.');
});
const query = "SELECT * FROM EMPLOYEE";
connection.query(query, (error, result, fields) => {
if (error) throw error;
console.log(result);
});
nodejs mysql 라이브러리를 이용하여 mysql DB에 접근할 수 있었다.
쿼리문을 통해 원하는 테이블의 자료를 가지고 올 수 있었다.
DB에 접근하여 쿼리문을 날리는 함수만 따로 만들고 싶었다.
const query = "SELECT * FROM EMPLOYEE";
const result = connection.query(query);
console.log(result.rows);
이렇게 접근하려고 하였지만 result.rows는 undefined로 result 안에 존재하지 않았다.
그래서 Promise를 이용한 방식으로 변경하였다.
const query = "SELECT * FROM EMPLOYEE";
function getUsers(sql) {
return new Promise((resolve, reject) => {
connection.query(sql, (error, results) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
}
getUsers(query).then((result) => console.log(result));
// app.ts
app.get("/users", userRoutes.get);
// user.js
function getUsers(sql, values) {
return new Promise((resolve, reject) => {
connection.query(sql, values, (error, results) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
}
export async function get(req, res) {
const query = "SELECT * FROM EMPLOYEE";
try {
const result = await getUsers(query, values);
res.status(200).json(result);
} catch (error) {
res.status(500).json(error);
}
}
export default {
get,
};
export async function get(req, res) {
// 첫번째 방법
const query1 = "SELECT * FROM EMPLOYEE WHERE EMPLOYEE_SEQ=?";
const values = [1];
// 두번째 방법
const query2 = `SELECT * FROM EMPLOYEE WHERE EMPLOYEE_SEQ=${req.params.id}`;
try {
const result = await getUsers(query2, values);
res.status(200).json(result);
} catch (error) {
res.status(500).json(error);
}
}