인증코드 테이블을 생성하려한다.
인증코드는 하나의 유저를 가지고 유저는 여러개의 인증코드를 가질수 있다는 가정하에 두 테이블의 관계는 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
가 생성된 것을 확인할 수 있다.