仅使用对象ID查询解析关系

时间:2015-08-03 18:11:29

标签: parse-platform

我想对具有关系列的类进行Parse查询。根据我的理解,我无法通过云函数传递整个关系对象,我只能将objectId作为字符串传递。

所以在我的iOS应用中,我像这样传递objectId

PFCloud.callFunctionInBackground("customReport", withParameters: ["thing":thing.objectId]){ (response, error) -> Void in
  println(response)
}

然后在我的Cloud代码函数中:

Parse.Cloud.define("customReport", function(request, response) {
  var promises = []

  var query = new Parse.Query("MyClass")

  //Search for thing
  if(request.params.thing != ""){
    query.equalTo('thing',request.params.thing)

    var promise1 = query.find()

    promises.push(promise1) 
  }

  //...

})

但这不起作用,因为equalTo语句需要thing个对象,而不是objectId

我有没有办法只使用objectId查询关系?或者我是否必须使用thing查询objectId对象, 然后执行equalTo检查?

4 个答案:

答案 0 :(得分:1)

看起来你可以查询//In my Cloud Code function... var ThingObject = Parse.Object.extend("Thing") var temporaryThing = new ThingObject() temporaryThing.id = request.params.thing query.equalTo('thing',temporaryThing) 。您只需要首先使用ID创建一个空对象:

background-size

答案 1 :(得分:0)

你是对的,你不能直接传递关系对象。你可以做的是在关系列中传递你要搜索的对象的objectId,然后查询关系列等于objectId的类。

如果你有一个名为" friends"的关系列,这是一个例子。在_User类上,您在iOS应用程序中传递_User对象的objectId:

Parse.Cloud.define("getFriends", function(request, response) {
    var userId = request.params.userId;

    var query = new Parse.Query(Parse.User);
    query.equalTo("friends", userId);
    query.find({
        success: function(friends) {
            response.success(friends);
        },
        error: function(error) {
            response.error(error);
        }
    });
});

答案 2 :(得分:0)

你绝对可以使用includeKey ......

基本上myQuery.includeKey(" collumnName")将在获取具有指向它的指针的对象时获取该键的整个对象。 2比1!

更多:

http://blog.parse.com/announcements/queries-for-relational-data/

答案 3 :(得分:0)

您必须将id更改为指针,然后您可以将其传递给query.whereEqualTo。 https://parse.com/questions/updating-a-field-without-retrieving-the-object-first

var Point = Parse.Object.extend("Event");
var point = new Point();
point.id = "dlkj83d";