Node.js + Express + MariaDB 로 로그인/게시판 구현하기(2)
npm i --save mysql
--save
dependency 자동으로 추가됨--savedev
dev dependency 자동으로 추가Express.js(node.js) MySQL 연동 및 CRUD 작업
//show_db.js
const express = require("express"); //import express
const router = express.Router();
const mysql = require("mysql"); // import mysql (mariadb도 있는데 함수들이 다름... 좀 더 봐야할듯)
router.get("/", (req, res) => {
const connection = mysql.createConnection({
host: "localhost",
port: 3306,
user: "yongjule", //db에 연결되는 아이디
password: "julejule", // 비번
database: "test", // 연결할 db 이름. (CREATE DATABASE [database_name]할때 그 database_name
}); // 해당 내용이 기반이 되어 DB에 연결됨.
connection.connect(); //DB에 연결
/**
* connection.query 작동방식
* DB 문 "select * from test"가 실행됨
* err 는 에러가 나면 에러 내용이 저장됨.
* 각 인자는 다음 코드블럭과 같이 옴
*/
connection.query("select * from test", (err, rows, fields) => {
connection.end() // 연결을 끊어줌
if (!err) {
console.log(rows);
console.log(fields);
const result = `rows : ${JSON.stringify(rows)},
fields : ${JSON.stringify(fields)}`;
res.send(result);
} else {
console.log(`query error : ${err}`);
res.send(err);
}
});
});
module.exports = router;
//err 객채
{
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: "Table 'jule.tes' doesn't exist",
sqlState: '42S02',
index: 0,
sql: 'select * from tes'
}
//rows
[
RowDataPacket { id: 1, name: 'jule' },
RowDataPacket { id: 2, name: 'ghan' },
RowDataPacket { id: 3, name: 'jiskim' },
RowDataPacket { id: 4, name: 'sehhong' },
RowDataPacket { id: 5, name: 'hyeonkki' }
]
//fields
[
FieldPacket {
catalog: 'def',
db: 'jule',
table: 'test',
orgTable: 'test',
name: 'id',
orgName: 'id',
charsetNr: 63,
length: 11,
type: 3,
flags: 0,
decimals: 0,
default: undefined,
zeroFill: false,
protocol41: true
},
FieldPacket {
catalog: 'def',
db: 'jule',
table: 'test',
orgTable: 'test',
name: 'name',
orgName: 'name',
charsetNr: 33,
length: 60,
type: 253,
flags: 0,
decimals: 0,
default: undefined,
zeroFill: false,
protocol41: true
}
]