sequelize initiate() 쓰는 방식 최신인지, 공식문서 방법인지 궁금합니다
483
작성한 질문수 24
영상에서는 sequelize 공식문서에서 바뀌어서 따라갔다고 하는데 공식문서에서 initiate() 쓰는 것 검색하였을 때 안보이며 static이랑 같이 쓴 것도 아직은 못찾았습니다
공식문서 따라가보면 주로 define(), init()을 쓰는데 강의영상의 방식과는 차이점이 있습니다.
define()
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');
const User = sequelize.define('User', {
// Model attributes are defined here
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
// Other model options go here
});
// `sequelize.define` also returns the model
console.log(User === sequelize.models.User); // trueinit()
// Invalid
class User extends Model {
id; // this field will shadow sequelize's getter & setter. It should be removed.
otherPublicField; // this field does not shadow anything. It is fine.
}
User.init({
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
}
}, { sequelize });
const user = new User({ id: 1 });
user.id; // undefined
강의에서 알려주는 방식으로 DB연결도 되고 조작도 잘되지만
이렇게 질문을 남긴 이유는
강의에서는 공식문서를 따라갔다고 하는데 공식문서에서는 찾기 어렵다는 점과
강의에 나오는 방식이 시기가 지난 방법이 아닐까 하는 생각에 질문 남기게 되었습니다
제가 찾아본게 잘못된걸수도 있기에 그런점 있다면 알려주세요
글읽어주셔서 고맙습니다:)
답변 2
0
네 맞습니다. initiate함수는 sequelize에서 제공하는 메소드가 아닙니다. initiate 라는 이름 대신 다른 이름을 사용해도 됩니다. 제로초님은 static 메소드를 활용함으로써, User의 인스턴스 없이 User.initiate() 이런 식으로 바로 사용하는 방식을 선택하신 것 같습니다. 나중에 메소드 호출할 때를 생각해보면 제로초님의 방식이 깔끔한 것 같네요!
0
질문이 잘 이해가 안 되는데요. 저도 init을 강의에서 쓰고 있습니다.(User.init)
그리고 class 문법은 자유자재로 활용해도 됩니다. User.init을 static initiate라는 함수 안에서 호출할 뿐입니다.
0
const Sequelize = require('sequelize');
class User extends Sequelize.Model {
static initiate(sequelize) {
User.init({
name: {
type: Sequelize.STRING(20),
allowNull: false,
unique: true,
},
age: {
type: Sequelize.INTEGER.UNSIGNED,
allowNull: false,
},
married: {
type: Sequelize.BOOLEAN,
allowNull: false,
},
comment: {
type: Sequelize.TEXT,
allowNull: true,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
},
}, {
sequelize,
timestamps: false,
underscored: false,
modelName: 'User',
tableName: 'users',
paranoid: false,
charset: 'utf8',
collate: 'utf8_general_ci',
});
}
static associate(db) {}
};
module.exports = User;아하 initiate는 sequelize에 있는 키워드가 아니라 "class 문법은 자유자재로 활용" 인가보군요
깃헙 질문
0
80
2
강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.
0
75
1
aws - lightsail 이용 관련
0
57
1
4강 http 서버 만들때 ESM방식으로 해도 될까요?
0
79
2
모듈 사용 시 단점이 있나요?
0
80
1
node.js 버전 및 typescript 적용 문의
0
92
2
12.7. 방장기능(강퇴) 질문드립니다.
0
79
2
12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요
0
68
1
12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.
0
74
2
12.7.1스스로 해보기 질문되나요
0
90
3
시퀄라이즈 실습하기 질문드립니다.
0
188
9
<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.
0
95
2
크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.
0
110
2
구매 결제관련 질문입니다 !
0
121
1
다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제
0
132
2
node 설치 방법이 전혀다르게 바뀐것 같습니다.
0
149
2
12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류
0
120
2
무료/프리미엄 동시 소유 시 질문
0
115
1
비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?
0
134
2
10강 cors에러 localhost:4000으로 접속했을때 에러
1
156
2
webstorm 해결할 수 없는 변수 문제
0
152
2
혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?
0
147
2
LightSail 실행 중 오류 질문드립니다!
0
199
2
RedisStore 사용법 질문
0
131
2





