Java脚本
解析云代码
在我的应用程序中,User
可以请求加入另一个Users
帐户。伪代码如下:
发送我们要加入的帐户的username
搜索以查看数据库中是否存在username
如果no
返回
如果yes
创建一个新的AccountRequest
对象
将新创建的AccountRequest
对象添加到我们要搜索的用户中。
我可以执行第1-4步,但是无法完成第5步。
这是我正在使用的代码。
Parse.Cloud.define("sendAccountAdditionRequest", function(request, response) {
console.log("-sendAccountAdditionRequest");
// Create the query on the User class
var query = new Parse.Query(Parse.User);
// Set our parameters to search on
query.equalTo("username", request.params.adminUsername);
// Perform search
query.find({
// We found a matching user
success: function(results) {
Parse.Cloud.useMasterKey();
var fetchedUser = results[0]
console.log("--found user");
console.log("--creating new AccountRequest");
// Create a new instance of AccountRequest
var AccountRequestClass = Parse.Object.extend("AccountRequest");
var accountRequest = new AccountRequestClass();
// Set the User it is related to. Our User class has a 1..n relationship to AccountRequest
accountRequest.set("user", fetchedUser);
// Set out other values for the AccountRequest
accountRequest.set("phone", request.params.adminUsername);
accountRequest.set("dateSent", Date.now());
// Save the new AccountRequest
accountRequest.save(null,{
// Once the new AccountRequest has been saved we need to add it to our fetched User
success:function(savedRequest) {
console.log("---adding AccountRequest to fetched User");
//
// === This is where stuff breaks
//
var requestRelation = fetchedUser.relation("accountRequest");
// Now we need to add the new AccountRequest to the fetched User. The accountRequest property for a User is array...I'm not sure how I'm suppose to append a new item to that. I think I need to somehow cast results[0] to a User object? Maybe?
requestRelation.add(savedRequest);
// We perform a save on the User now that the accountRequest has been added.
fetchedUser.save(null, {
success:function(response) {
console.log("----AccountRequest complete");
response.success("A request has been sent!");
},
error:function(error) {
// This is printing out: ParseUser { _objCount: 2, className: '_User', id: 'QjhQxWCFWs' }
console.log(error);
response.error(error);
}
});
//
// ================================
//
//response.success("A request has been sent!");
},
// There was an error saving the new AccountRequest
error:function(error) {
response.error(error);
}
});
},
// We were not able to find an account with the supplied username
error: function() {
response.error("An account with that number does not exist. Please tell your administrator to sign up before you are added.");
}
});
});
我相信我的问题是从初始查询返回的搜索结果中获取
accountRequest
关系。要注意的另一件事是,我尚未创建我的accountRequest
的PFUser
属性,我的理解是,当我执行save
函数时,这将由Parse自动完成。 最佳答案
是否为您创建accountRequest取决于是否将类级别权限设置为允许客户端应用程序添加字段。您的Parse.User可能设置为NO。
但是无论如何都不需要Parse.User上的关系,因为您已经在AccountRequest类上建立了该关系。给定一个用户,您可以通过以下方式获得它的accountRequests:
PFQuery *query = [PFQuery queryWithClassName:@"AccountRequest"];
[query whereKey:@"user" equalTo:aUser];
query.find()...
这等效于在User上获取关系,获取查询并运行它。
关于您的代码的几点注意事项:(a)当您知道只有一个结果时,
findOne
将为您节省一行;(b)使用Parse.Promise
确实可以使事情整齐。关于javascript - 将项目追加到获取的项目的数组解析云代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38382493/