Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 续集条件为upsert_Node.js_Sequelize.js - Fatal编程技术网

Node.js 续集条件为upsert

Node.js 续集条件为upsert,node.js,sequelize.js,Node.js,Sequelize.js,我目前正在将sequelize v5与node.js一起使用。我试图使用upsert创建新行或更新现有行,但我希望仅在满足条件时触发更新 await Model.upsert({values}); 在模型表中,我有一个布尔列。如果布尔值为true,我希望更新不会覆盖现有行。我想也许我可以使用一个钩子来进行beforeUpdate或beforeSave,但我想不出来 编辑:如果有必要的话,我正在使用postgresql。对于v5中的upsert操作,在upsert之前已经有一个钩子,尝试一下可能

我目前正在将sequelize v5与node.js一起使用。我试图使用upsert创建新行或更新现有行,但我希望仅在满足条件时触发更新

await Model.upsert({values});
在模型表中,我有一个布尔列。如果布尔值为true,我希望更新不会覆盖现有行。我想也许我可以使用一个钩子来进行beforeUpdate或beforeSave,但我想不出来


编辑:如果有必要的话,我正在使用postgresql。

对于v5中的upsert操作,在upsert之前已经有一个
钩子,尝试一下可能会有所帮助


下面是Sequelize v5的示例,您可以在其中找到所有挂钩及其用法

假设您有一个名为
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
  }
});

如果不满足该条件,我将如何防止发生意外?根据我对这个钩子的理解,我可以做其他的方法,但是在这些方法完成之后,upsert仍然会进行。我可能是错的,因为我还没有太多地使用钩子。当返回条件时,您可以停止执行函数;```如果(条件)返回```