[NodeJS] 5장 데이터베이스 연동하기

이번 예제는 Node.js에서 MongoDB 또는 MySQL 데이터 베이스를 연동하는 방법과 각각의 ORM인 Mongoose(몽고DB)의 Sequelize(MySQL)의 사용법을 알아보겠습니다.


1. MongoDB 설치 및 설정

  • Windows: Mongo Community Edition 다운로드에서 설치합니다.
  • macOS: Homebrew를 사용해 설치합니다.
brew tap mongodb/brew
brew install mongodb-community
  • Linux: 공식문서에 배포판에 따라 설치방법이 다르므로 공식문서를 참조

다음 명령어로 MongoDB 데이터베이스 저장소 폴더를 생성합니다.

mkdir C:\data\db

 

이제 MongoDB를 실행합니다. 설치된 경로에 따라 다음 명령어를 입력합니다.

"C:\Program Files\MongoDB\Server\<버전>\bin\mongod.exe"

 

새로운 Node.js 프로젝트를 생성해서 그안에 mongoDB를 적용시켜줍니다.

mkdir my-mongo-app 
cd my-mongo-app 
npm init -y

 

다음 명령어로 MongoDB 라이브러리인 Mongoose를 설치해줍니다.

npm install mongoose & yarn add mongoose

2. Mongoose 사용법

다음은 Mongoose를 사용해 데이터베이스를 연결해보겠습니다. 프로젝트 안에 app.js를 만들어 다음코드를 작성합니다.

// app.js
const mongoose = require("mongoose");

mongoose
  .connect("mongodb://localhost:27017/mydatabase", {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() => {
    console.log("MongoDB connected");
  })
  .catch((err) => {
    console.error("MongoDB connection error:", err);
  });

 

데이터 베이스를 연결해보았습니다. 그 다음에는 데이터의 스키마와 모델을 정의해야합니다.

// 스키마 및 모델 정의
const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
});

const User = mongoose.model("User", userSchema);

 

그 다음 데이터를 CRUD(생성읽기업로드삭제)기능을 구현하는 코드를 작성해보겠습니다.

// 데이터베이스 연결
const mongoose = require("mongoose");

mongoose
  .connect("mongodb://localhost:27017/mydatabase", {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() => {
    console.log("MongoDB connected");
  })
  .catch((err) => {
    console.error("MongoDB connection error:", err);
  });

// 스키마 및 모델 정의
const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
});

const User = mongoose.model("User", userSchema);

// CRUD 데이터 생성
const createUser = async () => {
  const user = new User({ name: "Alice", age: 30 });
  await user.save();
  console.log("User created", user);
};

// 데이터 읽기
const getUsers = async () => {
  const users = await User.find();
  console.log("Users:", users);
};

// 실행
createUser();
getUsers();
  • 코드 작성: app.js 파일에 위 코드를 작성
  • MongoDB 실행: 위에서 설명한 방법으로 MongoDB 서버를 실행
  • Node.js 실행: 커맨드 프롬프트에 다음 명령어 입력
node app.js

/* 
MongoDB connected
Users: []
User created {
  name: 'Alice',
  age: 30,
  _id: new ObjectId('67bcf77c72d5f3f4abe2bf9a'),
  __v: 0
}

*/

3.MySQL과 Sequelize 사용법

  • MySQL 설치 및 설정
  • MySQL 실행
    • MySQL을 설치후, Windows 서비스에서 MySQL을 찾아 실행합니다.
    • MySQL Workbench를 통해 데이터베이스를 관리할 수 있음
  • MySQL 로그인:
mysql -u root -p
  • 데이터베이스 생성 명령어
CREATE DATABASE blog;
  • 데이터베이스 확인
SHOW DATABASES;

 

  • 새로운 Node.js 프로젝트 생성
mkdir my-sql-app
cd my-sql-app
npm init -y
  • Sequelize 및 MySQL2 설치
npm install sequelize mysql2

 

다음은 Sequelize를 사용해 데이터베이스를 연결하는 코드를 작성합니다.

const { Sequelize, DataTypes } = require("sequelize");

const sequelize = new Sequelize("mydatabase", "root", "yourpassword", {
  host: "localhost",
  dialect: "mysql",
});

// 연결 테스트
const testConnection = async () => {
  try {
    await sequelize.authenticate();
    console.log("MySQL connected");
  } catch (error) {
    console.error("MySQL connection error:", error);
  }
};

testConnection();

// 모델 정의
const User = sequelize.define("User", {
  name: {
    type: DataTypes.STRING,
    allowNull: false,
  },
  age: {
    type: DataTypes.INTEGER,
    allowNull: false,
  },
});

// 데이터베이스 동기화
const syncDatabase = async () => {
  await sequelize.sync();
  console.log("Database synced!");
};

syncDatabase();

// 데이터 생성
const createUser = async () => {
  const user = await User.create({ name: "Alice", age: 30 });
  console.log("User created", user);
};

// 실행
const runApp = async () => {
  await syncDatabase();
  await createUser();
};

runApp();
  • 코드 작성: app.js 파일에 위 코드를 작성
  • MySQL 실행: 위에서 설명한 방법으로 MySQL 서버 실행
  • Nodejs 실행: 커맨드 프롬프트에 다음 명령어 입력
node app.js


 

 

GitHub - nodeJsroom/node-js-bloging

Contribute to nodeJsroom/node-js-bloging development by creating an account on GitHub.

github.com

 

LIST