Node.js + Express + MariaDB 로 로그인/게시판 구현하기(2)

npm i --save mysql

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
  }
]