[英]Parse.com: Signup user to role
在用戶注冊時如何將其添加到現有角色? 我下面的代碼不起作用,日志中沒有任何錯誤或打印(不確定我在做什么):
Parse.User.signUp(req.body.email, req.body.password, {
"name": req.body.name,
"email": req.body.email,
}, {
success: function(user) {
var query = new Parse.Query(Parse.Role);
query.equalTo("name", 'Basic User');
query.find({
success: function(roles) {
alert("HELLO" + roles);
if (roles.length < 1) {
alert("HELLO");
console.log("Error Signing Up: No roles for " + signUpRoleGroup + " were found");
} else {
alert("HERE");
roles[0].getUsers().add(user);
roles[0].save();
}
},
error: function(error) {
alert("Could not add users to the account " + accountName + " error: " + error.message);
}
});
},
error: function(user, error) {
alert("Error signing up user");
}
});
我認為發生了什么事,就是呼叫者沒有給此功能一個完成保存角色的機會。 在調用response.success()或error()之前,雲函數應該等待直到角色被保存。
這是對相同代碼的承諾返回重寫。 我認為,對序列進行的異步任務更輕松,也更清楚。 這使您可以更牢固地控制響應。
Parse.Cloud.define("signupAsBasicUser", function(request, response) {
signupAsBasicUser(request.params.name, request.params.password, request.params.email).then(function(user) {
response.success(user);
}, function(error) {
response.error(error);
});
});
// return a promise fulfilled with a signed-up user who is added to the 'Basic User" role
//
function signupAsBasicUser(name, password, email) {
Parse.Cloud.useMasterKey();
var user = new Parse.User();
user.set("username", name);
user.set("password", password);
user.set("email", email);
return user.signUp().then(function() {
var query = new Parse.Query(Parse.Role);
query.equalTo("name", 'Basic User');
return query.find();
}).then(function(roles) {
if (roles.length < 1) return Parse.Promise.error("no such role");
roles[0].getUsers().add(user);
return roles[0].save();
}).then(function() {
return user;
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.