使用 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 对象?的主要内容,如果未能解决你的问题,请参考以下文章

PHP无法从特定的DOM元素中检索值[重复]

在 PFQuery 中过滤未定义的文件

使用反射检索数组中的特定元素

如何在 Spring Boot 中使用特定日期范围和聚合从 MongoDB 数据库中检索数据?

如何在 Mongoose NodeJS 中使用聚合从数组中检索特定元素

mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]