【问题标题】:Sails js - model association save triggers beforeUpdate issueSails js - 模型关联保存触发器 beforeUpdate 问题
【发布时间】: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 路由的值吗?

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

    save 的情况下,它会为您提供该对象的所有值,但在update 的情况下,它只提供更新后的值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多