这是使用子对象上的条件解析父对象时查询的一般问题的特定情况。
我有两个相关的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中使用单个查询。
答案 0 :(得分:0)
如果Job有一个指向JobLocation的指针数组,那么你可以使用whereKeyMatchesQuery。根据某个位置的接近程度,在JobLocation上形成一个内部查询,然后在Job whereKey("locations", matchesQuery: locationQuery)
上形成一个查询。
如果一对多关系仅由从位置到Job的指针(这是合理的)表示,那么您必须查询JobLocation和includeKey("parentJob")
。遍历找到的对象并将其parentJobs收集到一个数组中,该数组是表的数据源。