[Node.js] mysql, Sequelize 모델 정의, 메소드 사용 방법
NodeJS 2023. 6. 1.
※참고 이 글에서는 '인스턴스'='데이터', 즉 테이블에 있는 데이터 한 행을 뜻함.
이 글에서는 '클래스'=테이블
기본적인 모델 정의 방법
const { DataTypes } = require('sequelize');
const { db, sequelize } = require('../db/database.js');
// db디렉토리에 있는 database 파일에 다음과 같이 작성함.
// const sequelize = new Sequelize(database, user, password, { host, dialect });
const 모델이름 = sequelize.define(테이블 이름, {
컬럼_이름: {
type: DataType.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
컬럼_이름2: {
type: DataType.STRING(45)
},
...
...
}, 옵션)
sequelize는 테이블 이름을 자동으로 복수형으로 만든다.
모델 메소드(Model method)
⚠️참고: sequelize 메소드는 프로미스(promise)를 반환한다.
create: 테이블에 데이터 추가
// 이름이 'John', 나이가 25인 인스턴스를 생성
모델명.create({ name: 'John', age: 25 });
findAll: 조건에 맞는 모든 데이터를 배열로 반환한다.
모델명.findAll({ WHERE: { 조건: 값 } });
findOne: 조건에 맞는 첫 번째 데이터를 반환한다.
모델명.findOne({ where: { 조건: '값' } });
findByPk: 주어진 PK(primaryKey)와 일치하는 데이터를 찾아서 반환한다.
// 해당 기본키(PK)를 가진 인스턴스를 찾아서 반환한다.
모델명.findByPk(기본키);
update: 주어진 조건에 맞는 데이터를 업데이트한다.
// 조건에 맞는 인스턴스(행)를 찾아서 해당 컬럼의 값을 바꾼다
모델명.update({ 컬럼_이름: '변경할 값' }, { where: { 조건 } });
destroy: 주어진 조건에 맞는 데이터를 삭제한다.
// 조건에 맞는 인스턴스를 찾아서 삭제한다.
모델명.destroy({ where: { 조건: '값' } });
bulkCreate: 여러개의 데이터를 한 번에 추가한다.
모델명.bulkCreate([{ 컬럼_이름: '값', 컬럼_이름: 값 }, { 컬럼_이름: '값', 컬럼_이름: 값 }]);
count: 조건에 맞는 데이터의 수를 반환한다.
// 조건이 20을 초과하는 인스턴스를 반환한다.
모델명.count({ where: { 조건: { [Op.gt]: 20 } } });
Sequelize는 여러 연산자를 제공한다. Op.?? 이런 형태이니 직접 찾아보길 바란다.
'NodeJS' 카테고리의 다른 글
[TypeScript] Literal Type과 as const이해하기 (0) | 2023.06.05 |
---|---|
[TypeScript] 초기 설정 및 데이터 유형별 타입 지정 방법 (0) | 2023.06.04 |
[Node.js] bcrypt와 jwt 이해 및 사용법 (0) | 2023.05.29 |
[Node.js] 유효성 검사(Validation), express-validator 사용법 (0) | 2023.05.28 |
[JS] 객체의 프로퍼티에 접근할 때 유용한 3가지 (0) | 2023.05.16 |