我目前正在node.js中使用sequelize v5。我正在尝试使用upsert来创建新行或更新现有行,但我希望仅在满足条件时才触发更新。
await Model.upsert({values});
在模型表中,我有一个布尔列。如果布尔值为true,我希望更新不会覆盖现有行。我想也许我可以在beforeUpdate或beforeSave上使用一个钩子,但是我想不出来。
编辑:如果有必要的话,我正在使用postgresql。
发布于 2020-08-12 07:16:28
假设您有一个名为User
的模型,您声明了模型类
class User extends Model {}
User.init({
username: DataTypes.STRING,
mood: {
type: DataTypes.ENUM,
values: ['happy', 'sad', 'neutral']
}
});
你可以像那样做广告挂钩
User.beforeUpsert(user, options) => {
if(user.condition){
... do stuff
}
});
发布于 2020-08-12 07:09:17
对于v5中的upsert操作,已经有了一个beforeUpsert
钩子,尝试一下可能会很有帮助。
以下是Sequelize v5的official docs,您可以在其中找到所有挂钩及其用法
https://stackoverflow.com/questions/63366436
复制相似问题