2016-05-19 11 views
0

Ich konvertiere meinen Code von parse.com zu parse-Server mit wenig Erfolg. Die Idee der afterSave-Funktion besteht darin, dem Benutzer nur die ACL zuzuweisen und den Benutzer der Benutzerrolle zuzuweisen.Parse Server Benutzer-ACL setzen und Rolle zuweisen

Der ACL-Teil funktioniert gut, jedoch kann ich den Benutzer nicht der Rolle zuweisen.

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; 
     }); 
    } 

}); 

Antwort

2

"jedoch kann ich den Benutzer nicht der Rolle zuweisen". Fügen Sie function (err) hinzu, um zu sehen, welcher Schritt fehlgeschlagen ist, und sehen Sie sich eine Fehlermeldung an.

Der von Ihnen angezeigte Code ist nicht korrekt.

versuchen dieses

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); 
Verwandte Themen