Parse platform 如何在解析中为一个用户分配多个角色?
我已经编写了一些云代码,在保存每个用户后执行。在内部,我想将用户添加到两个角色,Alpha和Free,但这段代码只成功地将新用户添加到Alpha角色;自由角色在用户表中没有数据。在解析中是否有一种方法可以为用户分配多个角色 这是我的云代码Parse platform 如何在解析中为一个用户分配多个角色?,parse-platform,Parse Platform,我已经编写了一些云代码,在保存每个用户后执行。在内部,我想将用户添加到两个角色,Alpha和Free,但这段代码只成功地将新用户添加到Alpha角色;自由角色在用户表中没有数据。在解析中是否有一种方法可以为用户分配多个角色 这是我的云代码 Parse.Cloud.afterSave(Parse.User, function(request, response) { Parse.Cloud.useMasterKey(); // grant administrative access to
Parse.Cloud.afterSave(Parse.User, function(request, response) {
Parse.Cloud.useMasterKey(); // grant administrative access to write to roles
var user = request.object;
query = new Parse.Query(Parse.Role);
query.equalTo("name", "Alpha");
query.first ( {
success: function(object) {
object.relation("users").add(user);
object.save();
response.success("The user has been authorized.");
},
error: function(error) {
response.error("User authorization failed!");
}
});
query = new Parse.Query(Parse.Role);
query.equalTo("name", "Free");
query.first ( {
success: function(object) {
object.relation("users").add(user);
object.save();
response.success("The user has been authorized.");
},
error: function(error) {
response.error("User authorization failed!");
}
});
});
问题在于排序。我们需要在调用response.success()之前完成所有查询和保存。正如现在一样,代码中操作的时间是不确定的。使用parse sdk返回的承诺来清理它
Parse.Cloud.afterSave(Parse.User, function(request, response) {
Parse.Cloud.useMasterKey(); // grant administrative access to write to roles
var user = request.object;
query = new Parse.Query(Parse.Role);
query.equalTo("name", "Alpha");
query.first().then(function(object) {
object.relation("users").add(user);
return object.save();
}).then(function() {
query = new Parse.Query(Parse.Role);
query.equalTo("name", "Free");
return query.first();
}).then(function(object) {
object.relation("users").add(user);
return object.save();
}).then(function() {
response.success("The user has been authorized.");
}, function(error) {
response.error("error: " + error.message);
});
});
非常感谢你!真不敢相信我居然没想到。您的解决方案非常有效。