Parse.com PFUser查询基于PFObject查询的结果

时间:2015-06-01 11:29:26

标签: ios parse-platform pfquery pfuser

我有一个包含用户的聊天室类。我可以成功查询该类并仅返回特定的PFUsers。

        // get all room IDs associated with current user
    var outerRoomQuery = PFQuery(className:Parse.CHATROOM_CLASS_NAME)
    outerRoomQuery.whereKey(Parse.CHATROOM_USER, equalTo: PFUser.currentUser()!)
    outerRoomQuery.selectKeys([Parse.CHATROOM_ROOMID])

    // get all users associated with above roomIds ignoring current User
    var innerRoomQuery = PFQuery(className:Parse.CHATROOM_CLASS_NAME)
    innerRoomQuery.whereKey(Parse.CHATROOM_ROOMID, matchesKey:Parse.CHATROOM_ROOMID, inQuery: outerRoomQuery)
    innerRoomQuery.whereKey(Parse.CHATROOM_USER, notEqualTo: PFUser.currentUser()!)
    innerRoomQuery.includeKey(Parse.CHATROOM_USER)
    innerRoomQuery.orderByDescending(Parse.CHATROOM_UPDATEDACTION)
    innerRoomQuery.selectKeys([Parse.CHATROOM_USER])

上述查询返回约5个用户。 我想知道是否可以将这些结果与单独的PFUser.query()组合以创建类似这样的OR查询:

     var userQuery = PFUser.query()
    userQuery?.whereKey(Parse.CHATROOM_USER, matchesKey:Parse.CHATROOM_USER, inQuery: innerRoomQuery) // returns nil

    var receptionQuery = PFUser.query()
    receptionQuery?.whereKey(Parse.USER_ROLE, equalTo:Parse.PFROLE_RECEPTIONIST) // returns around 10 receptionist users

    var orUserQuery = PFUser.query()
    return PFQuery.orQueryWithSubqueries([userQuery!, receptionQuery!])

上述结果仅返回接待员。所以我的问题是如何实现这一目标:        userQuery?.whereKey(Parse.CHATROOM_USER, matchesKey:Parse.CHATROOM_USER, inQuery: innerRoomQuery)

我知道这是错的,因为没有"用户" PFUser类中的(Parse.CHATROOM_USER)字段。我只是想知道是否有办法做到这一点,不首先解雇roomQuery并将返回的PFUser放入一个数组,然后解雇接待员用户查询并组合数组。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不完全确定你在问什么,但如果你想让一个查询找到一个特定类型的用户,我会以不同的方式处理这个问题。我会为我正在搜索的内容添加一个bool类型到用户类,并只查询具有该bool类型的所有用户为true!