如何使用 ObjectIds 数组从 Parse 中检索用户数组?

Posted

技术标签:

【中文标题】如何使用 ObjectIds 数组从 Parse 中检索用户数组?【英文标题】:How to retrieve array of users from Parse using array of ObjectIds? 【发布时间】:2015-04-23 21:16:35 【问题描述】:

所以我目前遇到了一个问题,我需要从我的 parse.com 数据库中检索一组用户。我有一个 objectIds 数组,我想查询这些数组以获得这些结果。

我在互联网上到处搜索,不幸的是没有一个解决方案有效。

我尝试创建一个查询键“objectId”的 PFQuery,但由于某种原因这不起作用(对于任何对象类型)。

这个链接里还有一个建议:Suggestion Link On Parse Forums

我将我的 swift 代码设置为类似于此,但我只是从 parse 接收空白 PFUsers。我调试了一下,似乎我的 for 循环中没有一个“伙伴”对象是用 objectIds 创建的。如您所见,我什至尝试手动设置它们。

我不知道我是否要解决这个问题,或者我的语法是错误的。任何帮助,将不胜感激。谢谢!

func queryForPartners(partnerIds : [NSString])


    var query = PFQuery(className: "User")

    var tempArrayOfObjects : [PFObject] = []
    for partnerId in partnerIds
    
        var partner: PFUser = PFUser.objectWithoutDataWithObjectId(partnerId as String)
        partner.objectId = partnerId as String
        tempArrayOfObjects.append(partner)
    
    PFUser.fetchAllInBackground(tempArrayOfObjects, block:  (objects, error) -> Void in
        if error == nil 
            // The find succeeded.
            println("Successfully retrieved \(objects!.count) Users.")
            self.usersForCells.removeAll(keepCapacity: false)
            if let objects = objects as? [PFUser] 
                for object in objects 
                    self.usersForCells.append(object)
                
            

         else 
            // Log details of the failure
            println("Error: \(error) \(error!.userInfo!)")
        
    )

【问题讨论】:

你如何测试他们是空白用户?是否返回任何错误? 空白用户的意思是,当我单步调试调试器时,我会在“tempArrayOfObjects.append(partner)”这一行暂停,在我的 PFObject 中,我会查看其中的所有不同值对象,它们都没有任何值。特别是 objectId,我认为它是在创建对象时设置的,或者当我在上面的行手动设置时。 你在对象上给objectForKey:打电话了吗? 你能描述一下你的意思吗?我不熟悉该功能的工作原理。 【参考方案1】:

首先简化您的用户查询。这将查询您的用户类:

var query = PFUser.query()

在您的查询中,对照您已存储的 partnerIds 数组检查“objectId”键。我假设 partnerIds 是一个字符串数组。这段代码基本上是在说:“检查你存储的每个用户。如果用户的 objectId 在 partnerIds 中,则返回它。”

query?.whereKey("objectId", containedIn: partnerIds)

运行您的查询:

query?.findObjectsInBackgroundWithBlock( (NSArray objects, NSError error) -> Void in
        if error == nil 
            if let objects = objects 
                // Do something with your users
            
         else 
            println("An error occurred")
        
    )

【讨论】:

以上是关于如何使用 ObjectIds 数组从 Parse 中检索用户数组?的主要内容,如果未能解决你的问题,请参考以下文章

哪种类型存储 MongoDB ObjectIds 数组?

Mongoose 聚合匹配 objectIds 数组

Mongoose Populate 不适用于 ObjectIds 数组

parse.com - 如何使用 PHP SDK 从 parse.com 查询和获取类似数组的 json?

MongoDB 的 ObjectIds 是如何生成的?

如何从 Parse.com 检索数组