【问题标题】:Parse - Many to One QueryParse - 多对一查询
【发布时间】:2015-01-30 04:51:24
【问题描述】:

我有一个获取用户最新帖子的查询。每个帖子都有一个“所有者”字段,其中包含创建它的帐户的“ObjectId”。我这样做是因为我还想显示创建帖子的人的用户名 - 可以在 User 表中找到。

我查看了查询的 Parse 文档并想出了这个(仿照他们的一个例子):

    var query = PFQuery(className:"Post")
    query.orderByDescending("createdAt");

    var innerQuery = PFQuery(className: "User")
    innerQuery.whereKey("objectId", matchesQuery: query)

然后我运行findObjectsInBackgroundWithBlock。我认为我没有从 User 表中获取信息来获取发布帖子的人的姓名。

我查看了包含帖子信息的对象,但我没有看到该对象中的用户信息。我做错了什么?

这是我的两个表的标题截图:

发布:

用户:

谢谢!

【问题讨论】:

    标签: ios swift xcode parse-platform nosql


    【解决方案1】:

    我认为问题在于您将查询中的用户表称为“PFQuery(className:“User”)”。但是如果你使用内置的用户表,它的名字实际上是“_User”。所以使用它,甚至更简单,使用:

    var innerQuery = PFUser.query()
    

    【讨论】:

      【解决方案2】:

      试试这个

          var class = PFQuery(className:"Post")
          var finduser:PFQuery = PFUser.query()
          finduser.whereKey("objectId", equalTo: class.objectForKey("owner").objectId)
          finduser.findObjectsInBackgroundWithBlock{
                      (objects:[AnyObject]!, error:NSError!)->Void in
                      if (error == nil){
                          if let userObjects = objects {
                              let UserResult = (userObjects as NSArray).lastObject as? PFUser
                              if let user = UserResult {
                                 println(user.username)
                                  }
                          }
                     }
           }
      

      【讨论】:

      • 嗯...我猜你不是打算将第一个变量命名为“类”?无论哪种方式,我都试过了,但似乎没有用。我要再试一次。也许我错过了什么?这是来自您的工作@user528432?
      • 我只是将它命名为类或任何你想要的。这对我有用,你遇到了什么错误?
      • 哪里有 finduser.whereKey("objectId", equalTo: class.objectForKey("owner").objectId),我收到以下错误:--> PFQuery 没有名为 ' 的成员objectForKey'。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2023-04-01
      • 2013-06-11
      相关资源
      最近更新 更多