NodeJS로 ORM 시퀀싱

6823 단어

소개



Sequelize는 NodeJS용 약속 기반 ORM(Object Relational Mapper)입니다. Oracle, Postgres, MySQL, MariaDB, SQLite 및 SQL Server 등과 같은 여러 데이터베이스를 Sequelize와 함께 사용할 수 있습니다.

ORM은 실제로 무엇을 의미합니까?
개체 관계형 매퍼는 데이터베이스 레코드를 개체로 나타냅니다. 객체 지향 패러다임을 사용하여 데이터베이스에서 데이터를 생성하고 조작할 수 있습니다.

따라서 Sequelize를 사용하면 클래스 메서드를 사용하여 SELECT, INSERT, UPDATE, DELETE 등과 같은 DML 작업을 수행할 수 있습니다. hasOne(), wantsTo() 및 hasMany() 등과 같은 클래스 메서드를 사용하여 데이터베이스 테이블에서 관계를 정의할 수도 있습니다.

자, 이제 시작하겠습니다

NodeJS 애플리케이션 만들기



원하는 위치에 새 폴더를 만들고 아래 명령을 사용하여 이것을 node.js 앱으로 초기화합니다.
npm init
필요한 정보를 추가한 후 Enter 키를 계속 누르면 node.js 앱이 준비됩니다.

이제 아래 명령을 사용하여 필요한 모든 종속성을 설치하십시오.
npm install express mysql2 cors sequelize - save
모든 종속성을 성공적으로 설치한 후 package.json 파일은 아래와 같이 표시됩니다.



다음 단계는 새로운 익스프레스 웹 서버를 생성하는 것입니다. 폴더 루트에 filename.js 파일을 추가하고 아래 코드를 추가합니다.

const cors = require("cors");
const express = require("express");

const app = express();

var corsOptions = {
  origin: "http://localhost:8081"
};

app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(express.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));

// simple route
app.get("/", (req, res) => {
  res.json({ message: "Welcome to NodeJs App!!!" });
});

// set port, listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server is up and running on port ${PORT}.`);
});


다음 명령을 사용하여 서버를 실행합니다.
node filename.js
다음과 같은 메시지가 나타납니다



이제 브라우저로 이동하여 URL을 입력하면 -> [ http://localhost:8080/ ] 응용 프로그램이 실행되고 있음을 알 수 있습니다.



데이터베이스 만들기

MSSQL Server로 이동하여 새 데이터베이스를 만들 수 있습니다. 제 경우에는 Microsoft Azure에서 만들었습니다. Sequelize를 사용하여 테이블을 생성할 수 있습니다.

다음 단계는 모든 데이터베이스 구성을 파일에 넣는 것입니다. 그래서 아래와 같이 config.js 파일을 만들었습니다.
module.exports = {
HOST: "localhost",
USER: "root",
PASSWORD: "",
DB: "student_db",
dialect: "mysql",
pool: {//pool configuration
max: 5,//maximum number of connection in pool
min: 0,//minimum number of connection in pool
acquire: 30000,//maximum time in ms that pool will try to get connection before throwing error
idle: 10000//maximum time in ms, that a connection can be idle before being released
}
};

초기화 시퀀싱

루트 디렉터리에 모델이라는 새 폴더를 만들고 index.js라는 새 파일을 추가합니다. 거기에 아래 코드를 추가합니다.

const dbConfig = require(“../config/config.js:);

const Sequelize = require(“Sequelize”);
const Sequelize = new Sequelize(dbCofig.DB, dbConfig.USER,
dbConfig.PASSWORD, {
    host: dbConfig.HOST,
    dialect: dbConfig.dialect,
    operationsAliases: false,
    pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
    }
};
const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.student= require(“./student.js”) (sequelize, Sequelize);

module.exports = db;
The user should not forget to summon the sync() method in the server.js.
const app = express();
app.use(....);

const db = require(“./models”);
db.sequelize.sync();


기존 테이블을 삭제해야 하고 데이터베이스를 다시 동기화해야 하는 경우 아래와 같이 force: true 코드를 입력합니다.

db.sequelize.sync({force: true}).then(() => {

console.log(“Drop and resync db.”);

});


이제 student.js라는 새 모델을 만들어야 합니다.

module.exports = (sequelize, Sequelize) => {
    const Student = sequelize.define("student", {
      name: {
        type: Sequelize.STRING
      },
      admission:{
        type:Sequelize.INTEGER
      },
      class: {
        type: Sequelize.INTEGER
      },
      city: {
        type: Sequelize.STRING
      }
    });

    return Student;
  };


컨트롤러 만들기

아래는 컨트롤러에 대한 코드입니다.

const db = require(“../models”);
// models path depends on your structure
const Student= db.student;

exports.create = (req, res) => {
// Validating the request
if (!req.body.title) {
res.status(400).send ({
message: “Content can be placed here!”
});
return;
}

// Creating a Student
const student = {
name: req.body.name,
admission: req.body.admission,
class: req.body.class,
city: req.body.city
};

// Saving the Student in the database
Student .create(student). then(data => {
res.send(data);
}) .catch(err => {
res.status(500).send ({
Message:
err.message || “Some errors will occur when creating a student”
});
});
};


데이터 검색

아래 코드를 사용하여 데이터를 검색할 수 있습니다.

exports.findAll = (req, res) => {

  const name = req.query.name;
  var condition = name ? { name: { [Op.like]: `%${name}%` } } : null;

  Student.findAll({ where: condition })
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while retrieving data."
      });
    });

};


이제 컨트롤러와 모델을 추가했으므로 컨트롤러를 실행할 애플리케이션에 경로를 정의해야 합니다. 계속해서 경로를 만들어 보겠습니다.

경로 정의

route라는 새 폴더를 만들고 그 안에 새로운 route.js 파일을 추가할 수 있습니다. 해당 파일에 아래 코드를 추가합니다.

module.exports = app => {
    const students = require("../controllers/student.js");

    var router = require("express").Router();

    // add new student
    router.post("/", students.create);

    // view all students
    router.get("/", students.findAll);
 };



이제 아래 코드를 사용하여 student_server.js 파일에 경로를 포함합니다.
require("./routes/routes.js")(app);
Postman에서 경로를 호출하여 API를 테스트할 수 있습니다.

읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기