ORM/Sequelize(7)
-
Sequelize 관계 쿼리
include 우리가 SQL 에서 관계 있는 테이블을 불러올 때는 JOIN 을 사용하여 원하는 데아터를 가지고 왔다. 시퀄라이즈에서는 include 를 사용한다. 관계가 있는 모델을 include 에 배열을 넣어주면 된다. → 배열인 이유는 다양한 모델과 관계가 있을 수 있기 때문 const findPosts = await Posts.findAll({ // 컬럼 나열 attributes: ['postId', 'userId', 'title', 'createdAt', 'updatedAt'], include: [ { model: Users, // posts에 없는 컬럼을 join을 통해 가져오기 attributes: ['nickname'], // nickname 가져오기 }, ], order: [['creat..
2023.07.09 -
Sequelize CRUD 쿼리
테이블 조회 FindAll 쿼리 결과를 배열 객체로 반환 모든 데이터를 조회하고 싶으면 findAll 메서드를 사용 const { User } = require('./models'); // users테이블 전체를 조회해서 그 결과값을 객체로 만들어 user변수에 넣어준다. const user = User.findAll({}); // user변수에는 조회된 결과 객체가 들어있어서, 해당 테이블 컬럼들을 조회할수 있다. console.log(user[0].comment) // findAll는 여러 행들을 조회하기에, 각 행들이 배열로 저장되어있다. // 따라서 배열 인덱스로 조회한다. 첫번째 행 users테이블에 comment필드를 조회하기 FindOne 쿼리 결과를 객체로 반환 테이블의 데이터를 하나만 가..
2023.07.09 -
Sequelize 관계 정의하기
테이블 간의 관계에는 1:N, 1:1, N:M 이 있다. 1:N 사용자 모델은 게시글 모델과 1:N 관계를 가지고 있다. 모델의 1:N 관계를 설정할 때는 model.hasMany, model.belongsTo 2가지의 메서드를 사용한다. 만약 모델 간의 관계를 설정한 경우 foreignKey 에 해당하는 컬럼이 belongsTo 메서드를 사용하는 모델에 생성되게 된다. /* user.js */ static associate(db) { db.User.hasMany(db.Comment, { foreignKey: 'commenter', sourceKey: 'id', onDelete: 'cascade', onUpdate: 'cascade' }); // db.User (hasMany) db.Comment = 1..
2023.07.09 -
Sequelize Model
model 은 특정 table 과 column 의 속성값을 입력하여, MySQL 과 express 프로젝트를 연결시켜준다. 'use strict'; const { Model } = require('sequelize'); /** * @param {import("sequelize").Sequelize} sequelize - Sequelize * @param {import("sequelize").DataTypes} DataTypes - Sequelize Column DataTypes * @return {Model} - Sequelize Model * **/ module.exports = (sequelize, DataTypes) => { class Posts extends Model { /** * Helper ..
2023.07.09 -
Sequelize Migration
migration 은 Sequelize CLI 를 이용해 MySQL 에 테이블을 생성하기 위해 사용된다. MySQL 에 실제 이식될 테이블에 대한 형태, 속성값을 정의해준다. npx sequelize model:generate --name Posts --attributes title:string,content:string,password:string 테이블을 생성하면 Migration, Models 폴더에 각각 1개의 파일이 생성된걸 확인 할 수 있다. —name 은 테이블 이름을 지정 —attributes 는 입력한 Column 과 속성을 지정해준다. Sequelize 는 Migrations 에 설정된 정보를 바탕으로 MySQL 테이블을 생성한다. npx sequelize db:migrate 'use ..
2023.07.09 -
Sequelize 라이브러리 구성
1. 라이브러리 설치 # express, sequelize, mysql2 라이브러리를 설치합니다. npm install express sequelize mysql2 # sequelize-cli, nodemon 라이브러리를 DevDependency로 설치합니다. npm install -D sequelize-cli nodemon # 설치한 sequelize를 초기화 하여, sequelize를 사용할 수 있는 구조를 생성합니다. npx sequelize init mysql2 를 설치하지 않으면 에러가 발생! sequelize-cli 는 터미널에서 sequelize 명령어를 사용할 수 있는 도구이다. npx sequelize init 내 프로젝트 폴더 이름 ├── models │ └── index.js ├── ..
2023.07.09