Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발공부일지

NodeJS - ORM, Sequelize, User CRUD 본문

NodeJS

NodeJS - ORM, Sequelize, User CRUD

보람- 2023. 10. 23. 18:03

목차

1. ORM

2. Sequelize

3. create (INSERT queries)

4. findAll (SELECT queries)

5. findOne 

6. update (UPDATE queries)

7. destroy (DELETE queries)


 

 

 

1. ORM

- Object Relational Mapping
- 데이터 관리 주고받을때 '객체'로 데이터베이스 관리하는 데이터는 '테이블'

- 객체와 테이블을 객체지향으로 사용하기위한 라이브러리
   → 웹서버 안에서 DB내용을 조작하기 위한!
        →  mysql2를 사용해도 가능은 했지만 (통신을 위한것이라서)

- CRUD를 위한 코드와 테이블이 추상화 되어있다

 

- 메서드던지 함수던지 인자를 넘길때 객체를 주로 넘기는데 그 객체가 어떻게 만들어진건지 확인해야한다.

   - 확인하는 방법으로 instanceof

 

- ORM은객체지향과 개발에 집중할수있게 해준다!! 

  → query를 쓰지않아도 된다!

 

 

 

 

2. Sequelize

 

- 공식사이트

 https://sequelize.org/docs/v6/core-concepts/model-basics/

 

- 드라이버 설치하기

npm init -y
npm install sequelize mysql2 cors

 

 

- connection 하기

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

const db = {
    database: "test_login",
    username: "boram",
    pasword: "*********",
    host: "127.0.0.1",
    port: "3306",
    dialect: "mysql",
};

const sequelize = new Sequelize(db.database, db.username, db.pasword, db);

// table 정보가 들어가야해!
require("./user.entity")(sequelize, DataTypes);
// console.log(sequelize.models); //{ User: User }

sequelize.sync({force: true}).then(async () => {
	console.log("connection!");
}

 - db정보를 좀더 깔끔하게 사용하고싶다면 'dotenv' 사용하기!

 

 

ⓛ class로  entity만들기

더보기
module.exports = (sequelize) => {
    // console.log(sequelize);
    // console.log(Model.toString()); // class Model
    class User extends Model {}
    // 1. 테이블에 대한 필드내용 정의
    // 2. Users users,
    User.init(
        {
            id: {
                type: DataTypes.STRING,
                allowNull: false,
                primaryKey: true,
                // autoIncrement:true,
            },
            pw: {
                type: DataTypes.STRING,
                allowNull: false,
            },
            name: {
                type: DataTypes.STRING,
                allowNull: false,
            },
        },
        {
            sequelize,
            modelName: "Users",
        }
    );
    // static method -> Model에 있어
    return User;
};

 

 

② 함수로 entity만들기

module.exports = (sequelize, DataTypes) => {
    sequelize.define(
        "User",
        {
            id: {
                type: DataTypes.STRING,
                allowNull: false,
                primaryKey: true,
                // autoIncrement:true,
            },
            pw: {
                type: DataTypes.STRING,
                allowNull: false,
            },
            name: {
                type: DataTypes.STRING,
                allowNull: false,
            },
        },
        {
            freezeTableName: true,
        }
    );
};

 

 

 

 

 

3. create (INSERT queries)

const {User} = sequelize.models;
await User.create({id: "guniee", pw: "1234", name: "boram"});
await User.create({id: "ppo", pw: "123456", name: "bboo"});

 

 

 

 

4. findAll (SELECT queries)

const list = await User.findAll({
    raw: true,
    where: {
        id: "guniee",
    },
});
console.log(list);

 

 

 

 

5. findOne ()

const user1 = await User.findOne({
    raw: true,
    where: {
        id: "ppo",
    },
});
console.log(user1);

 

 

 

 

6. update (UPDATE queries)

await User.update(
    {id: "penguniee"},
    {
        where: {
            id: "guniee",
        },
    }
);

 

 

 

 

7. destroy (DELETE queries)

await User.destroy({
    where: {
        id: "ppo",
    },
});

 

 


※ 좋은 연습 방법으로 기존에 배웠던 repository 를 sequelize로 구현해보기! CRUD !!!