使用 PFQuery 检索包含数组中特定项目的 PFInstallation 对象?
Posted
技术标签:
【中文标题】使用 PFQuery 检索包含数组中特定项目的 PFInstallation 对象?【英文标题】:Using PFQuery to retrieve PFInstallation objects containing a specific item in their array? 【发布时间】:2014-07-03 06:27:20 【问题描述】:如果用户最喜欢的食物在某一天出现在用餐菜单上,我会尝试向用户发送推送通知。例如,如果用户将比萨、意大利面和土豆列为他最喜欢的食物,并且在特定的一天,菜单包含比萨,用户将收到推送通知。
这就是我目前储存最喜欢的食物的方式
PFInstallation *installation = [PFInstallation currentInstallation];
[installation addUniqueObject:foodName forKey:@"favorites"];
[installation saveInBackground];
在可用功能中,我找到了这些,但仔细检查后,它们似乎不是我需要的
- (void)whereKey:(NSString *)key containedIn:(NSArray *)array;
- (void)whereKeyExists:(NSString *)key;
(我将使用云代码来检索数据,但我假设有一个类似的 javascript 方法。)
有没有办法查询所有安装对象的收藏夹数组中包含给定项目的信息?
此外,虽然我将每个用户映射到一组食物,但将每个食物映射到一组对应用户似乎更直观。但是,我不希望用户输入登录信息,所以我试图避免使用 PFUser 类,我不知道是否有另一种将用户添加到数组的方法。我想知道这是否可能,以及是否可以更轻松地检索信息。
【问题讨论】:
【参考方案1】:根据Queries on Array Values 上的文档,如果您想查找数组中存在值的行:
[query whereKey:@"favorites" equalTo:@"pizza"];
这将返回“pizza”在数组列“favorites”中的所有行。
【讨论】:
如果我想检查最喜欢的单词是否包含在食物名称中,而不是相同的匹配项——例如,如果用户最喜欢“pizza”,他们应该会收到“cheese pizza”的通知” “意大利辣香肠比萨饼” 等等——我会将食物分成一组单独的单词并使用whereKey:containedIn:
这当然提出了一些有趣的挑战,听起来值得提出一个新问题。【参考方案2】:
您可以前往 Parse.com 上的 PFRelation Class 进行关系查询。
对于查询,您可以查找块(对不起,它是在快速编码中)
let query : PFQuery = PFQuery(className: "GameScore")
query.whereKey("favorite", containedIn: ["item1", "item2"])
query.findObjectsInBackgroundWithBlock((objects: AnyObject[]!, error: NSError!) in
// your code
)
【讨论】:
以上是关于使用 PFQuery 检索包含数组中特定项目的 PFInstallation 对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中使用特定日期范围和聚合从 MongoDB 数据库中检索数据?