仅在连接表

时间:2017-07-07 06:43:10

标签: node.js sequelize.js

默认情况下,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,我该怎么办?

1 个答案:

答案 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,这样该列就不会存在。 并且比使用钩子更清洁。