Sequelize association foreignKey 생성방법

마데슾 : My Dev Space·2020년 6월 10일
0

인증코드 테이블을 생성하려한다.

인증코드는 하나의 유저를 가지고 유저는 여러개의 인증코드를 가질수 있다는 가정하에 두 테이블의 관계는 1:다이다.

그래서 인증코드 테이블에는 아래와 같이 해주고,

module.exports = (sequelize, DataTypes) => {
  const EmailAuth = sequelize.define(
    'EmailAuth',
    {
      token: DataTypes.STRING,
      ttl: DataTypes.INTEGER,
    },
    {
      charset: 'utf8mb4',
      collate: 'utf8mb4_general_ci',
    }
  );

  EmailAuth.associate = (db) => {
    db.EmailAuth.belongsTo(db.User); // point!
  };

  return EmailAuth;
};

유저 테이블에는 아래와 같이 해주고 migrate를 실행해주면..!

User.associate = (db) => {
  db.User.hasMany(db.EmailAuth) // point!
};

인증코드 테이블에 자동으로 userid라는 c가 생성될것으로 예상했지만.. 생기지 않더라..ㅎㅎ

찾아보니 해당 테이블의 migrations 파일에서 몇가지 추가해줘야할 것이 있었다.

UserId: {
  type: Sequelize.INTEGER,
  references: {
    model: 'users',
    key: 'id',
  },
},

위와 같이 코드를 추가해주고 migrate를 undo하고 다시 실행시켜주면 foreignKey가 생성된 것을 확인할 수 있다.

참고글

profile
👩🏻‍💻 🚀

0개의 댓글