express - 如何通过选项来 Sequelize afterBulkUpdate

标签 express sequelize.js sequelize-hooks

我正在更新用户,但之后我还需要更新 user_profile 表。用户表得到更新,但在 afterBulkUpdate Hook 中,选项未定义,因此无法解构并引发错误。如何在使用 Model.update 时传递选项并在 afterBulkUpdate 选项中访问它们。我知道我以错误的方式传递选项,我该如何正确地做。
这就是我的做法

User.update({ password : newPassword, phone_number: phoneNumber 
   }, {  where: { username } } , { userOptions: { avatar, nationality, username} } );

然后在 afterBulkUpdate 我想更新用户配置文件表。
  User.afterBulkUpdate(async (user, options) => {
    console.log("user is: ", user); // user is not null
    console.log("options are: ", options); // options is undefined
    const { userOptions} = options;
    const { avatar, nationality, username} = userOptions;

    UserProfile.update({ avatar, nationality} ,{ where: { username }  });

  });

最佳答案

看完后this question .我自己做了破解来解决这个问题,它有效,我不知道它是否推荐或将来会有问题,请建议以防万一。

我将更新更改为

User.update({ password : newPassword, phone_number: phoneNumber 
   }, {  where: { username } , userOptions: { avatar, nationality, username} }  );

userOptions 和 where 子句作为一个对象中的对象传递给钩子(Hook),所以我将 afterBulkCreate 更改为
User.afterBulkUpdate(async (user, options) => {
    const { userOptions } = user;
    const { avatar, nationality, username} = userOptions;
    UserProfile.update({ avatar, nationality} ,{ where: { username }  });
  });

关于express - 如何通过选项来 Sequelize afterBulkUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62407588/

相关文章:

javascript - 在带有express和mysql的nodejs中未定义 session

sql - 如何在 select 中使用函数以及 Sequelize 中的所有记录?

javascript - 如何在sequelize 对象上创建一个方法来检查是否创建了另一个与其关联的对象?

mysql - 迁移模型时使用 MySQL 方言的 Sequelize 无法生成外键

node.js - 当使用 Sequelize.js 创建另一条记录时,如何在数据库中自动创建一条新记录?

node.js - Express.js 中间件 - 将项目添加到响应对象模型

javascript - 在express.js中,res.render()不起作用

javascript - NodeJS错误: Cannot GET/from running the url on the web browser