2017-02-06 3 views
0

Когда я сохраняю пользователя после создания ассоциации, запускается крючок User.beforeUpdate.Sails js - ассоциация модели save triggers beforeUpdate issue

Проблема, с которой я столкнулась, состоит в том, что аргумент значений по какой-либо причине содержит весь пользовательский объект.

В hook.Ifter 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: '[email protected]', 
    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?

ответ

0

В случае save он дает вам все значения для этого объекта, но в случае update он дает только обновленные значения.

Вам необходимо будет изменить свою функцию перед обновлением.