【发布时间】:2022-10-20 15:56:05
【问题描述】:
对于我的一个模型/表,我通过将paranoid 选项设置为true,在Sequelize 中定义了一个软删除,这给了我一个deletedAt 列。
我还想确保updatedAt 列也始终是最新的。 updatedAt 列是否可以在每次更改为 deletedAt 时更新?我确实想将paranoid 保留为true。
我已经使用 Sequelize 钩子进行了调查:https://sequelize.org/master/manual/hooks.html,我假设它必须是afterUpdate 或afterDestroy 之一?
如果有帮助,编辑添加模型:
module.exports = (sequelize, DataTypes) => sequelize.define('myTable', {
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
allowNull: true,
},
/* some more fields... */
deletedAt: {
type: DataTypes.DATE,
allowNull: true,
},
createdAt: {
type: DataTypes.DATE,
allowNull: false,
},
updatedAt: { // <- want this to reflect updates on deletedAt too
type: DataTypes.DATE,
allowNull: false,
},
}, {
paranoid: true,
timestamps: true,
/* Added the following: */
hooks: {
afterBulkDestroy(item) {
console.log(item);
}
}
});
UDPATE:尝试添加afterBulkDestroy,在打印出item 后显示:
{
where: { id: '12' },
hooks: true,
individualHooks: false,
force: false,
cascade: false,
restartIdentity: false,
type: 'BULKDELETE',
model: myTable
}
不知道从哪里开始 - 以为我可以做一个简单的item.updatedAt = item.deletedAt,但显然不是这样。
【问题讨论】:
标签: node.js sequelize.js