【发布时间】:2017-02-07 17:05:20
【问题描述】:
当我在创建关联后保存用户时,会触发 User.beforeUpdate 挂钩。
我遇到的问题是 values 参数由于某种原因包含整个用户对象。
在 User.afterCreate 挂钩中,我像这样将用户权限与用户关联起来。
Permission.getPermission(path,roleStr)
.then((permission) => {
User.findOne({id:user.id})
.populate('permissions')
.then((resUser) => {
resUser.permissions.add(permission.id);
resUser.save((err) => {
if(err) return deferred.reject(err);
return deferred.resolve();
});
})
.catch((err) => {});
})
.catch(function (err) {
console.log("addPermissionToUser Failed", err);
deferred.reject(err);
});
在调用 .save() 方法后,User.beforeUpate 被传递给这个对象。
{
email: 'superman@test.com',
firstName: 'Super',
lastName: 'SuperAdmin',
password: '$2a$10$0snWTh65eU9L6gPFYbRAV.seyGSit5v1gefp4asL3MGGKWRlv8QwK',
emailVerified: true,
provider: 'local',
profileCompleted: true,
dob: null,
verificationCode: '1486421848265-AU6A6NHQtY5AU2Bl',
uid: 'super-man',
createdAt: 2017-02-06T22:57:28.471Z,
updatedAt: 2017-02-06T22:57:28.471Z,
id: '5898ff58ffc05b1c221ac262'
}
因为在 beforeUpdate 中还有其他逻辑可以转换某些值,如果它们存在则返回整个用户对象是一个问题。
为什么将用户对象传递给 beforeUpdate?它不应该是我们明确发布到 User.update 路由的值吗?
【问题讨论】: