Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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 如何从afterUpsert钩子获取更新的sequelize模型的实例?_Node.js_Sequelize.js - Fatal编程技术网

Node.js 如何从afterUpsert钩子获取更新的sequelize模型的实例?

Node.js 如何从afterUpsert钩子获取更新的sequelize模型的实例?,node.js,sequelize.js,Node.js,Sequelize.js,其他sequelize钩子,如afterUpdate(实例,选项)提供修改模型的实例作为参数。但是,afterUpsert(created,options)提供了一个created布尔值,指示操作是插入还是更新 是否有办法配置sequelize或操纵afterUpsert参数,以获得upserted模型的实例?据我所知,您无法。由于upsert通过queryInterface调用db的结果是返回到afterUpsert钩子的内容,无论upsert过程中是否有任何新创建的记录,它都是boolean

其他sequelize钩子,如
afterUpdate(实例,选项)
提供修改模型的实例作为参数。但是,
afterUpsert(created,options)
提供了一个
created
布尔值,指示操作是插入还是更新


是否有办法配置sequelize或操纵
afterUpsert
参数,以获得upserted模型的实例?

据我所知,您无法。由于
upsert
通过
queryInterface
调用db的
结果
是返回到
afterUpsert
钩子的内容,无论
upsert
过程中是否有任何新创建的记录,它都是
boolean


同时,您可以使用
beforeuspert
将值传递给
upspert
方法。不确定这是否有用(可能是清除缓存)

据我所知,您不能。由于
upsert
通过
queryInterface
调用db的
结果
是返回到
afterUpsert
钩子的内容,无论
upsert
过程中是否有任何新创建的记录,它都是
boolean


同时,您可以使用
beforeuspert
将值传递给
upspert
方法。不确定这是否有帮助(可能是清除缓存)

我最近也遇到了同样的问题,我可以通过这种方式来管理它:

beforeUpsert: (values, options)=>{
    /* afterUpsert will always get an array of type [Model, created] as first argument */
    options.returning = true;
},
我决定使用beforeUpsert钩子来确保对Model.upsert的任何调用都必须返回一个实例,而不仅仅是一个创建的布尔值。但是,你也可以打电话

upsert(values,{returning: true});

HTH

我最近也遇到了同样的问题,我可以这样处理:

beforeUpsert: (values, options)=>{
    /* afterUpsert will always get an array of type [Model, created] as first argument */
    options.returning = true;
},
我决定使用beforeUpsert钩子来确保对Model.upsert的任何调用都必须返回一个实例,而不仅仅是一个创建的布尔值。但是,你也可以打电话

upsert(values,{returning: true});