express - 如何通过选项来续集afterBulkUpdate
问题描述
我正在更新用户,但之后我还需要更新 user_profile 表。用户表得到更新,但在 afterBulkUpdate 挂钩中,选项未定义,因此无法解构并引发错误。如何在使用 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 } });
});
解决方案
看完 这个问题。我自己做了破解来解决这个问题,它有效,我不知道它是否推荐或将来会有问题,请建议以防万一。
我将更新更改为
User.update({ password : newPassword, phone_number: phoneNumber
}, { where: { username } , userOptions: { avatar, nationality, username} } );
userOptions 和 where 子句作为一个对象中的对象传递给钩子,所以我将 afterBulkCreate 更改为
User.afterBulkUpdate(async (user, options) => {
const { userOptions } = user;
const { avatar, nationality, username} = userOptions;
UserProfile.update({ avatar, nationality} ,{ where: { username } });
});
推荐阅读
- javascript - 在 vscode 中导入文件路径自动完成
- goland - Goland IDE - 离线使用
- java - 如何从队列目的地获取消息?
- python - Numpy 将整数数组保存为浮点数组
- css - CSS - 仅显示第二个 ul 的最后一个 li
- java - 肥皂错误类型:java.lang.ClassCastException
- javascript - Webpack 图像加载器和 Rails
- c# - 未找到自定义 C# 属性的命名空间
- ruby-on-rails - 502 Bad Gateway - Rails 应用程序、Puma、Capistrano、Nginx
- html - 在 bootstrap4 中显示容器后面的图像