我想对具有关系列的类进行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
检查?
答案 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";