【问题标题】:Parse Query from 2 Collections从 2 个集合中解析查询
【发布时间】:2023-04-08 01:11:01
【问题描述】:

我在 iOS Swift 应用程序中使用 Parse,但无法找出如何对两个集合进行查询,我猜这类似于连接。

我有一组列表,它们包含家庭信息和用户 ID。我向用户集合添加了一个键值,指示用户是否正在度假。我要做的查询是查找用户未休假的所有列表。

这是用于检索列表的解析代码,但我不知道如何从用户集合中添加第二个条件。

            let query = PFQuery(className: "Listing")
        query.order(byDescending: "createdAt")
        query.whereKey("categoryHome", equalTo: type.rawValue)
        query.limit = limit
        query.skip = skip
        query.findObjectsInBackground { (objects, error) -> Void in
            if let objects = objects as? [Listing]
            {
                success(objects)
            }
            else
            {
                let error = error! as NSError
                let errorMessage = "\(error.localizedDescription)\n(\(error.code))"
                SVProgressHUD.showError(withStatus: errorMessage)
            }
        }

我打算做这样的事情来查询用户,但我需要将它添加到上面的查询中。

    let userQuery = PFUser.query()
    userQuery.whereKeyDoesNotExist("onVacation")

那么,我如何将这些结合起来进行一个查询,以查找用户未休假的所有列表?

如果有人可以向我展示一个快速的 sn-p,或者向我指出一个对两个集合执行查询的示例,那就太好了。我已经阅读了关于关系、查询等的解析文档,但仍然无法理解如何将上面的两个查询放在一起。

感谢您的帮助。

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    从您的帖子中不清楚您如何将用户与列表关联,但假设列表具有指向用户的指针,那么您可以执行类似的操作

    var userQuery = PFUser.query()
    userQuery!.whereKeyDoesNotExist("onVacation")
    var listQuery = PFQuery(className:"Listing")
    listQuery.whereKey("categoryHome", equalTo: type.rawValue)
    listQuery.whereKey("user", matchesQuery: userQuery!)
    listQuery.findObjectsInBackgroundWithBlock {
       (results: [PFObject]?, error: NSError?) -> Void in
       if error == nil {
       // results will contain lists where the user is not on vacation
       }
    }
    

    如果您想了解更多关于matchesQuery 的信息,请查看Parse iOS guide

    【讨论】:

    • 天啊,我想这就是我想要的。谢谢你,我会试试的。而且,为了回答您的问题,我有从列表中获取的用户 ID……事后看来,它应该是一个用户指针。再次感谢,我会尽快尝试。
    • @LilMoke 即使在您只使用用户 ID 的情况下,您也可以使用 matchesKeyInQuery 代替(其中 userId 和 objectId 是您匹配的两个键)。不过要小心 matchQuery,因为如果您的查询不是很有选择性并且您有大量集合,它们可能会非常低效
    • 啊,很高兴知道。是的,我明白了,我一定错过了matchesQuery。感谢您的提示。
    猜你喜欢
    • 2019-12-03
    • 2020-04-27
    • 2018-08-02
    • 1970-01-01
    • 2017-10-22
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多