在创建关联后保存用户时,会触发User.beforeUpdate挂钩。
我遇到的问题是,由于某种原因,values参数包含整个用户对象。
在User.afterCreate挂钩中,我将用户权限关联给用户,如下所示。
stringi
调用.save()方法后,User.beforeUpate将传递此对象。
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);
});
因为在beforeUpdate中存在其他逻辑,如果它们存在则转换某些值会使整个用户对象返回是一个问题。
为什么用户对象被传递给beforeUpdate?它不应该只是我们明确发布到User.update路由的值吗?
答案 0 :(得分:0)
如果是@Test
public void testCatalogItemUpdate() {
String correlationId = getCorrelation();
try {
parallel().actions(
//use correlationId
//invoke test scenario
//assert results
);
} finally {
print(correlationId);
}
}
,它会为您提供该对象的所有值,但在save
的情况下,它仅提供更新的值。
您必须相应地修改您的更新前功能。