2016-05-19 13 views
0

私のコードをparse.comからparse-serverに変換していますが、ほとんど成功しません。 afterSave関数のアイデアは、ユーザーのみのACLを割り当て、ユーザーを 'user'ロールに割り当てることです。パーズサーバーを設定してユーザーACLを割り当て、ロールを割り当てる

ACLの部分は正常に機能しますが、ユーザーを役割に割り当てることができません。

Parse.Cloud.afterSave(Parse.User, function(req, res) { 

    if (!req.object.existed()) { 
     var user = req.object; 
     var acl = new Parse.ACL(user); 
     acl.setReadAccess(user, true); 
     acl.setWriteAccess(user, true); 
     user.setACL(acl); 
     return user.save({}, { useMasterKey: true }).then(function() { 
      var query = new Parse.Query(Parse.Role); 
      query.equalTo("name", 'user'); 
      return query.first({useMasterKey: true}); 
     }).then(function(roles) { 
      if (roles.length < 1) return Parse.Promise.error("no such role"); 
      roles[0].getUsers({useMasterKey: true}).add(user); 
      return roles[0].save({}, { useMasterKey: true }); 
     }).then(function() { 
      return user; 
     }); 
    } 

}); 

答えて

2

"ただし、ユーザーを役割に割り当てることができません"。どのステップが失敗したかを見るために関数(err)を追加し、エラーメッセージを見てください。

あなたが表示されているコードは間違っています。

この1

return user.save({}, { useMasterKey: true }).then(function() { 
    var query = new Parse.Query(Parse.Role); 
    query.equalTo("name", 'user'); 
    return query.first({useMasterKey: true}); 
    //first will return one object or null 
}).then(function(role) { 
    //.getUsers() is equal .relation('users') 
    if(role){ 
     role.getUsers().add(user); 
     return role.save(null, { useMasterKey: true }); 
    }else{ 
     return Parse.Promise.error("no such role"); 
    } 
}, console.error).then(function() { 
    return user; 
}, console.error); 
を試してみてください