用于Objective C的Javascript PFCloud

时间:2015-08-03 23:15:01

标签: javascript parse-platform

使用下面的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");
    }
}];

谢谢!

1 个答案:

答案 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