프로그래밍/NodeJS

node.js환경에서 mysql 연동 세팅하기

타코코딩 2023. 10. 23. 17:19

MySQL을 Node.js와 통합
하려면 널리 사용되는 MySQL 드라이버인
mysql2
. 또한 MySQL을 설치하고 작업할 테이블이 있는 데이터베이스를 생성해야 합니다.
요약
npm i mysql2

터미널에 mysql2 버전으로 설치를 진행한다

 

import mysql from "mysql2";

const dbInfo = {
  host: "localhost",
  port: "워크벤치포트",
  user: "워크벤치아이디",
  password: "워크벤치비번",
  database: "db이름",
};

const db = {
  init: function () {
    return mysql.createConnection(dbInfo);
  },
  connect: function (conn) {
    conn.connect(function (err) {
      if (err) console.error("mysql 연결 에러" + err);
      else console.log("mysql 연결성공");
    });
  },
};

export default db;

알아보기 쉽게 db 폴더에 database.js 파일을 만들어서 위 템플릿을 입력한다.

별도의 설정이 없으면 워크벤치 포트는 '3306' 워크벤치 아이디는 'root' 

 

 

import dbConfig from "../db/database.js";

const conn = dbConfig.init();
dbConfig.connect(conn);

app.js나 server.js처럼 본인이 서버 관리를 위해 만든 js 파일이 있다면 그곳에 import 하면 된다.

router를 사용하는 경우에는 db를 사용하는 router 쪽에 반드시 import를 해야 함!

router.post("/register", (req, res, next) => {
  let { url, title, content } = req.body;
  const sql =
    "insert into news(url,title,content,rdate) values(?,?,?,curdate())";
  const params = [url, title, content];
  conn.query(sql, params, (err) => {
    if (err) {
      console.log(err);
    } else {
      res.redirect("/news");
    }
  });
});

mysql insert 문법으로 행추가가 가능하다. body에서 받아올 값은 템플릿 리터럴이나 변숫값을  바로 사용하지 말고 일단? 기호로 남겨 conn.query함수에서 받아쓴다. 파라미터값이 여러 개면 위 코드처럼 params(배열명 작명 마음대로)라는 배열을 만들어 사용하면 된다.

mysql 워크벤치나 디비버 같은 기타 툴에서 select 문으로 insert가 정상 적용 되었는지 조회가 가능하다.

설명

mysql2 패키지를.

npm 또는 Yarn을 사용하여 패키지를 설치할 수 있습니다  터미널을 열고 다음을 실행하세요.

npm install mysql2

 

MySQL 데이터베이스 생성:

MySQL이 설치되어 있는지 확인하고 데이터베이스를 생성하십시오. 예를 들어 다음과 같은 데이터베이스를 생성할 수 있습니다

CREATE DATABASE mydb;

 

테이블 만들기:

데이터베이스 내부에 테이블을 만듭니다 mydb. 다음 은 users두 개의 열로 구성된 간단한 테이블의 예입니다

USE mydb;

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));

 

Node.js :

이제 Node.js 스크립트를 생성하여 MySQL 데이터베이스에 연결하고, CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행하고 오류를 처리할 수 있습니다. 기본적인 예는 다음과 같습니다.

const mysql = require('mysql2');



// Create a connection to the MySQL database

const connection = mysql.createConnection({

host: 'localhost', // Change this to your MySQL server hostname

user: 'your_username', // Replace with your MySQL username

password: 'your_password', // Replace with your MySQL password

database: 'mydb', // Use the name of your database

});



// Connect to the database

connection.connect((err) => {

if (err) {

console.error('Error connecting to MySQL:', err);

return;

}

console.log('Connected to MySQL');

});



// Insert a new record into the 'users' table

const newUser = { name: 'John Doe' };

connection.query('INSERT INTO users SET ?', newUser, (err, results) => {

if (err) {

console.error('Error inserting record:', err);

} else {

console.log('Inserted a new record with ID:', results.insertId);

}

});



// Query data from the 'users' table

connection.query('SELECT * FROM users', (err, results) => {

if (err) {

console.error('Error querying data:', err);

} else {

console.log('Query results:', results);

}

});



// Close the connection

connection.end((err) => {

if (err) {

console.error('Error closing the connection:', err);

} else {

console.log('Connection closed');

}

});

 

 

연결 옵션의 자리 표시자 값을 MySQL 서버 세부 정보로 바꿔야 합니다.

예제 실행:

스크립트를 파일(: mysql_example.js)에 저장하고 Node.js로 실행합니다.

node mysql_example.js

연결, 레코드 삽입, 데이터 검색 및 연결 종료와 관련된 출력이 표시되어야 합니다.

이상 MySQLNode.js와 통합하는 방법에 대한 기본 예입니다