在子对象上使用where子句的单个Parse查询

时间:2015-04-21 00:27:28

标签: ios swift parse-platform

这是使用子对象上的条件解析父对象时查询的一般问题的特定情况。

我有两个相关的Parse对象 - 作业 jobLocations 。工作可能有很多jobLocations。 jobLocations Parse对象具有指向其父作业的指针。我试图发出一个单一的查询(在PFQueryCollectionViewController中),以返回一个与当前位置相距一定距离的位置的作业列表。

代码如下:

var locationQuery = PFQuery(className: "jobLocations")
locationQuery.whereKey("geoLocation", nearGeoPoint: myLocation, withinKilometers: localDistance)
locationQuery.includeKey("parentJob")

var query = PFQuery(className: "jobs")
query.whereKey("objectId", matchesKey: "parentJob", inQuery: locationQuery)

locationQuery成功找到了正确的jobLocations但我无法弄清楚在Jobs上的查询中使用这些的方法。上面的代码似乎没有返回任何匹配的作业。我也尝试过:

query.whereKey("objectId", matchesKey: "parentJob.objectId", inQuery: locationQuery)

...但点符号似乎不适用于whereKey

已经研究过Parse文档并使用Google搜索但无法找到示例。

显然,我可以将位置查询的结果存储在数组中,然后在作业查询的where键中使用它,但我需要在PFQueryCollectionViewController中使用单个查询。

1 个答案:

答案 0 :(得分:0)

如果Job有一个指向JobLocation的指针数组,那么你可以使用whereKeyMatchesQuery。根据某个位置的接近程度,在JobLocation上形成一个内部查询,然后在Job whereKey("locations", matchesQuery: locationQuery)上形成一个查询。

如果一对多关系仅由从位置到Job的指针(这是合理的)表示,那么您必须查询JobLocation和includeKey("parentJob")。遍历找到的对象并将其parentJobs收集到一个数组中,该数组是表的数据源。