• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

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;

답변 4

·

답변을 작성해보세요.

1

실인자로 넣는 부분 말고 매개변수로 받는 부분을 보시면 됩니다.

각각, sequelize.define의 sequelize와 DataTypes.STRING의 DataTypes(Sequelize)로 연결됩니다.

sequelize는 Sequelize 클래스의 인스턴스입니다. STRING은 클래스 메서드고, define은 인스턴스 메서드라서 둘 다 필요한 겁니다.

0

class에만 해당되는 메서드가 있습니다. static 메서드라고 불립니다. STRING같은 게 static 메서드입니다.

0

ryu sin님의 프로필

ryu sin

질문자

2018.10.10

혹시, user.js같은 js 파일들의 내부에서

sequelize.define('user', {} 하는 부분에서 처음으로 method가 정의되는 건가요?

그리고, DataTypes.STRING(40) 으로 class method도 선언 하구요.

근데 그렇다 해도, 굳이 원래는 한곳에서 상속되어 온 건데 sequelize와 Sequlize를 나누는 이유를 모르겠습니다 ㅜ.ㅜ

0

ryu sin님의 프로필

ryu sin

질문자

2018.10.10

오오. 멋진 답변 정말 감사합니다! 그렇군요!! 이게 정말 쉬운게 아니네요 ㅇ,.ㅇ;;

근데 아직도 이해가 안가는 부분이 있습니다.

--> require('sequelize')에서 Sequlize가 왔고, 여기서 'new Sequelize를 통해서 sequelize가 탄생.

그렇다면 method도 공유 해야 하는거 아닌가요?

class와 instance 간에 다른 method를 만드는 코드를 본 기억이 없어서요.

여담이지만

좋은 강의 감사드립니다. 책으로도 사고, 강좌로도 듣고 있는데 정말 알찹니다.

단, 책이 너무 무거워서 ebook으로 다시 사야 할거 같네요 - _ -;