0

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

        // 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 并将返回的 PFUsers 放入数组中,然后触发接待员用户查询并组合数组。

有任何想法吗?

4

1 回答 1

0

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

于 2015-06-01T19:24:58.460 回答