inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js 교과서 - 기본부터 프로젝트 실습까지

다대다 관계 이해하기

sequelize, Sequelize 둘다 인자로 주는 이유가 무엇인가요?

508

ryu sin

작성한 질문수 28

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;

javascript mongodb nodejs mysql

답변 4

1

제로초(조현영)

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

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

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

0

제로초(조현영)

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

0

ryu sin

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

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

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

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

0

ryu sin

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

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

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

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

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

여담이지만

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

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

실제 서비스에서도 cluster를 사용하나요?

1

314

2

캐싱에 관하여

0

279

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

408

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

418

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

235

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2586

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

338

3

현영님 몽고db관련 질문입니다.

0

233

3