2017-02-06 2 views
0

アソシエーションを作成した後にユーザーを保存すると、User.beforeUpdateフックがトリガーされます。セイルjs - モデル関連のセーブトリガーbeforeUpdate issue

私が抱えている問題は、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: '[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の場合は、更新された値のみが表示されます。

これに合わせて更新前機能を変更する必要があります。

関連する問題