我有一個雲代碼,在用戶註冊時創建兩個帳戶角色。下面是方法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的文檔說這是 user - 正在發出請求的Parse.User。如果沒有登錄用戶,這不會被設置。 我正在嘗試添加用戶,當我們註冊時,所以用戶沒有登錄,因此爲空。所以我認爲這隻能通過調用另一個雲端功能來完成,這在登錄後會這樣做 –
誰在保存「賬戶」對象?用戶保存將在雲代碼中顯示爲'request.user'。 –