解析来自2个集合的查询

时间:2018-08-28 10:09:32

标签: ios swift parse-platform

我在iOS Swift应用程序中使用了Parse,但在查找如何对两个集合进行查询时遇到了麻烦,我想与联接类似。

我有一个列表集合,其中包含家庭信息和一个userId。我已向用户集合添加了一个键值,该值指示用户是否正在休假。我要查询的是查找用户不在休假的所有列表。

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

            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")

那么,如何结合使用这些查询来查找用户未休假的所有列表?

如果有人可以向我展示一个简短的摘要,或者将我指向一个对两个集合进行查询的示例,那就太好了。我已经阅读了有关关系,查询等方面的解析文档,但仍然无法理解如何将以上两个查询放在一起。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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