使用下面的Javascript代码,我是否需要定义我希望它访问的Parse数据库(_User)的名称?目前我得到'错误代码:141',所以我想也许它不知道我想要查询什么数据库,因为我有多个。
Parse.Cloud.define("test", function(request, response) {
Parse.Cloud.useMasterKey();
var friendRequestId = request.params.friendRequest;
var query = new Parse.Query("FriendRequest");
query.get(friendRequestId, {
success: function() {
response.success("Success!");
},
error: function(error) {
response.error(error);
}
});
});
对于那些想要看到我称之为PFCloud
的人[PFCloud callFunctionInBackground:@"test" withParameters:@{@"friendRequest" : friendRequest.objectId} block:^(id object, NSError *error) {
if (!error) {
NSLog(@"Success");
}
else {
NSLog(@"Error");
}
}];
谢谢!
答案 0 :(得分:1)
您是什么意思,您希望它访问哪个数据库?您定义了要查询新Parse.Query(“class”)的类;所以你要通过FriendRequest类查询。也许您的班级名称实际上不是FriendRequest?这是区分大小写的。
我建议您使用Parse Promises而不是回调。此外,基于id查询对象的替代方法是基于id获取对象。以下是我对您的云代码应该是什么样的建议:
**注意,OP在评论中要求一些额外的帮助,所以这个答案正在更新,以反映他的其他问题。
Parse.Cloud.define("test", function( request, response )
{
Parse.Cloud.useMasterKey() //You only need this if you're, say, editing a user that didn't make this request or accessing an object that users don't have access to
var FriendRequest = Parse.Object.extend("FriendRequeset");
var friendRequestId = request.params.friendRequest;
var friendRequest = new FriendRequest();
var user1;
var user2;
friendRequest.id = friendRequestId;
friendRequest.fetch().then
(
function( friendRequest )
{
user1 = friendRequest.get("user1");
user2 = friendRequest.get("user2");
return Parse.Object.fetchAll([user1, user2]);
},
function( error )
{
response.error("Error fetching FriendRequest: " + error.message); //This will give you a bit more of a description of your errors
}
).then //fetchAll
function( objects )
{
//set up your relations. I've never used relations, but I'm sure you can find some examples
return Parse.Object.saveAll([user1, user2]);
},
function( error )
{
response.error("Error fetching users: " + error.message);
}
).then //saveAll
(
function( objects )
{
response.success("Success!");
},
function( error )
{
response.error("Error saving the users: " + error.message);
}
);
});
注意我在错误调用中添加了一些输出。在调试的过程中,这对你有很大的帮助。习惯这样做。
最后,检查Parse仪表板中的日志。它通常会告诉您在哪个行上出现错误。查找“on main.js:xxxx:yy”xxxx是发生错误的行号。
编辑 - 我从你的obj-c代码中看到了NSLog,并误认为是来自云代码的response.success / error调用。如果你在我编辑它之前看到这个,我完全撒谎可能是你的错误:p