У меня есть код облака, который создает две роли учетной записи при регистрации пользователя. Ниже приведен методParse.com, Добавление пользователей к созданным ролям
Parse.Cloud.afterSave("account", function(request) {
var accountName = request.object.get("name");
//create admin role
var adminRoleACL = new Parse.ACL();
adminRoleACL.setPublicWriteAccess(true);
var adminRole = new Parse.Role(accountName + "_Administrator", adminRoleACL);
adminRole.save() ;
//create user role
var userRoleACL = new Parse.ACL();
userRoleACL.setPublicWriteAccess(true);
var userRole = new Parse.Role(accountName + "_User", userRoleACL);
userRole.save();
});
Теперь то, что я хотел добиться, чтобы добавить пользователя, который только что подписался на эти две роли. Но, к сожалению, я видел, что в облачном коде я не могу получить текущего пользователя. Так что я сделал это, чтобы добавить пользователей в роль после создания ролей с клиентской стороны. Ниже приведен код для него. Код выполняется отлично, и я не видел никаких ошибок, однако я не видел, чтобы пользователи добавлялись к ролям в браузере данных. Любая идея, почему это происходит? Я что-то упускаю. Я был бы очень благодарен за вашу помощь.
user.signUp(null, {
success : function(user) {
var currentUser = Parse.User.current();
var accountName = account.get("name");
var query = new Parse.Query(Parse.Role);
query.contains("name", accountName);
query.find({
success : function(roles) {
if (!roles) {
alert("No roles for " + accountName + " were found");
} else {
for (var i = 0; i < roles.length; i++) {
//add the user for admin role
//TODO: this needs to be done only once for the account owner
if (roles[i].get("name").search(USER_TYPE.ADMIN) >= 0) {
roles[i].getUsers().add(currentUser);
}
//add the user for user role
if (roles[i].get("name").search(USER_TYPE.USER) >= 0) {
roles[i].getUsers().add(currentUser);
}
var saved = roles[i].save();
}
alert("User was added into roles");
}
},
error : function(error) {
alert("Could not add users to the account " + accountName + " error: " + error.message);
}
});
alert("User created successfully");
},
error : function(user, error) {
alert("Error: " + error.code + " " + error.message);
}
});
Спасибо за ответ. Документация для request.user говорит об этом пользователь - The Parse.User, который делает запрос. Это не будет установлено, если не было зарегистрированного пользователя. Я пытаюсь добавить пользователей, когда мы регистрируемся, поэтому пользователь не входит в систему и, следовательно, имеет значение NULL. Поэтому я думаю, что это можно сделать только путем вызова другой облачной функции, которая делает это после входа в систему –
Кто сохраняет объект «учетная запись»? Пользователь, сохраняющий это, будет отображаться как «request.user» в Cloud Code. –