Sails js - 在更新问题之前模型关联保存触发器

时间:2017-02-06 23:16:40

标签: sails.js waterline

在创建关联后保存用户时,会触发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路由的值吗?

1 个答案:

答案 0 :(得分:0)

如果是@Test public void testCatalogItemUpdate() { String correlationId = getCorrelation(); try { parallel().actions( //use correlationId //invoke test scenario //assert results ); } finally { print(correlationId); } } ,它会为您提供该对象的所有值,但在save的情况下,它仅提供更新的值。

您必须相应地修改您的更新前功能。