개발공부일지
NodeJS - ORM, Sequelize, User CRUD 본문
목차
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 !!!
'NodeJS' 카테고리의 다른 글
NodeJS - TDD (0) | 2023.10.25 |
---|---|
NodeJS - DTO (0) | 2023.10.24 |
NodeJS - RESTful API, 회원가입 (Front, Back 분리) (1) | 2023.10.20 |
NodeJS - Server 분리 (Front, Back), CORS Error (1) | 2023.10.19 |
NodeJS - 의존성 주입(DI), 제어의 역전(IoC), Overring, overloading (0) | 2023.10.15 |