-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
sequelize, Sequelize 둘다 인자로 주는 이유가 무엇인가요?
18.10.09 18:35 작성 조회수 286
1
코드를 보면, sequelize와 Sequelize를 둘다 인자로 주는 부분이 있습니다.
그러나, 어찌보면 둘다 require('sequelize')에서 온건데, 굳이 저렇게 하는 이유가 뭔가요?
db.User = require('./user')(sequelize, Sequelize);
db.Post = require('./post')(sequelize, Sequelize);
이하는 코드 전문입니다.
const Sequelize = require('sequelize');const env = process.env.NODE_ENV || 'development';
const config = require('../config/config')[env];
const db = {};
const sequelize = new Sequelize(
config.database, config.username, config.password, config,
);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.User = require('./user')(sequelize, Sequelize);
db.Post = require('./post')(sequelize, Sequelize);
db.Hashtag = require('./hashtag')(sequelize, Sequelize);
db.User.hasMany(db.Post);
db.Post.belongsTo(db.User);
db.Post.belongsToMany(db.Hashtag, { through: 'PostHashtag' });
db.Hashtag.belongsToMany(db.Post, { through: 'PostHashtag' });
db.User.belongsToMany(db.User, {
foreignKey: 'followingId',
as: 'Followers',
through: 'Follow',
});
db.User.belongsToMany(db.User, {
foreignKey: 'followerId',
as: 'Followings',
through: 'Follow',
});
db.User.belongsToMany(db.Post, {through:'Like'});
db.Post.belongsToMany(db.User, {through:'Like'});
module.exports = db;
답변을 작성해보세요.
1
조현영
지식공유자2018.10.10
실인자로 넣는 부분 말고 매개변수로 받는 부분을 보시면 됩니다.
각각, sequelize.define의 sequelize와 DataTypes.STRING의 DataTypes(Sequelize)로 연결됩니다.
sequelize는 Sequelize 클래스의 인스턴스입니다. STRING은 클래스 메서드고, define은 인스턴스 메서드라서 둘 다 필요한 겁니다.
0
0
ryu sin
질문자2018.10.10
혹시, user.js같은 js 파일들의 내부에서
sequelize.define('user', {} 하는 부분에서 처음으로 method가 정의되는 건가요?
그리고, DataTypes.STRING(40) 으로 class method도 선언 하구요.
근데 그렇다 해도, 굳이 원래는 한곳에서 상속되어 온 건데 sequelize와 Sequlize를 나누는 이유를 모르겠습니다 ㅜ.ㅜ
0
ryu sin
질문자2018.10.10
오오. 멋진 답변 정말 감사합니다! 그렇군요!! 이게 정말 쉬운게 아니네요 ㅇ,.ㅇ;;
근데 아직도 이해가 안가는 부분이 있습니다.
--> require('sequelize')에서 Sequlize가 왔고, 여기서 'new Sequelize를 통해서 sequelize가 탄생.
그렇다면 method도 공유 해야 하는거 아닌가요?
class와 instance 간에 다른 method를 만드는 코드를 본 기억이 없어서요.
여담이지만
좋은 강의 감사드립니다. 책으로도 사고, 강좌로도 듣고 있는데 정말 알찹니다.
단, 책이 너무 무거워서 ebook으로 다시 사야 할거 같네요 - _ -;
답변 4