默认情况下,sequelize将在连接表中为多对多关系创建createdAt和updatedAt列,但我只想使用createdAt
列并在创建行时自动设置它。
自定义UserJob
型号:
const UserJob = sequelize.define('UserJob', {
createdAt: DataTypes.DATE
}, {
timestamps: false
});
UserJob.beforeCreate((userJob, options) => {
console.log('before create');
userJob.createdAt = new Date();
});
return UserJob;
社团:
User.belongsToMany(models.Job, {through: UserJob, foreignKey: 'user_id'});
Job.belongsToMany(models.User, {through: UserJob, foreignKey: 'job_id'});
它没有设置createdAt,我该怎么办?
答案 0 :(得分:1)
作为sequelize suggests,如果您不想要特定的时间戳 您应该将模型定义为
const Foo = sequelize.define('foo', { /* bla */
{ // don't forget to enable timestamps!
timestamps: true,
// I don't want createdAt
createdAt: false,
// I want updatedAt to actually be called updateTimestamp
updatedAt: 'updateTimestamp'
})
因此,对于您的情况,您可以将updatedAt
设置为false,这样该列就不会存在。
并且比使用钩子更清洁。