PFQuery返回对象的关系匹配所有条件的对象

时间:2015-06-29 17:59:17

标签: objective-c search parse-platform pfrelation

使用Parse DB后端处理iPhone应用程序我尝试使用搜索令牌来实现搜索功能。我阅读了Parse关于可扩展搜索,关系与指针,文档,各种SO / Parse.com讨论等的白皮书。 - 遗憾的是,我找不到与我的问题有任何相似之处。

我正在使用课程SearchToken我存储了唯一已清理的令牌,我在相关课程PFRelation *tokenRelation中有一个Article每篇文章都可以有多个搜索令牌;每个令牌都可以与多篇文章相关)。

我试图形成一个查询,查找包含所有搜索令牌的Article类中的所有对象(例如@"token1", @"token2")。很遗憾whereKey:containsAllObjectsInArray:不会处理PFRelation属性,这会让我感到更加复杂。

一个简单的选择是将PFRelation属性转换为指针数组,但我知道相关令牌的数量可以超过任何地方提到的100个对象的限制,所以我在这里有点犹豫。

我的问题是:有没有其他方法可以查询匹配相关对象中所有条件的对象(通过PFRelation),还是有更好的方法来实现标记化搜索功能?

1 个答案:

答案 0 :(得分:0)

我使用指针数组,因为我假设可以在一篇文章上设置最大数量的令牌。 (AFAIK的限制是1k Parse Docs )Parse说如果你知道最大数量(例如邮政编码)就有意义了。见Relationships in parse

如果指针数组不适合您,我将解决与您自己的类(例如HasToken或TokenRelationship)的n:m关系,而不是PFRelation(或指针数组)。

@interface TokenRelationship : PFObject <PFSubclassing>
@property (nonatomic, strong) Article article;
@property (nonatomic, strong) SearchToken searchToken;
@end

然后使用whereKey:matchesQuery:使用子查询对TokenRelationship执行查询。

然而,你可以达到1k的限制。所以两种解决方案都有其局限性我希望解析引入forein-key指针的where-key约束,例如:whereKey:@"searchToken.tokenString" equalTo:@"token1",或者它们消除了对子/内部查询的1k限制。否则n:m关系查询可能超出限制。