0

I have a chatroom class containing users. I can successfully query that class and return only specific 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])

The above query returns about 5 users. I'm wondering if it is possible to combine these results with a separate PFUser.query() to create an OR query something like this:

     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!])

The result of above only returns the receptionists. So my question is how to achieve this line: userQuery?.whereKey(Parse.CHATROOM_USER, matchesKey:Parse.CHATROOM_USER, inQuery: innerRoomQuery)

I know this is wrong because there is no "user" (Parse.CHATROOM_USER) field in the PFUser class. I'm just wondering if there is a way to do this without firing off the roomQuery first and putting the returned PFUsers into an array and then firing the receptionist users query and combining the arrays.

Any ideas?

elprl
  • 1,940
  • 25
  • 36

1 Answers1

0

I'm not entirely sure what you are asking but if you are trying to have a single query find a specific type of user, i would approach this in a different fashion. I would add a bool type to the user class for what I am searching for, and just query for all the users with that bool type as true!

Nolan Betts
  • 13
  • 2
  • 9