Получение реляционных пользователей из Parse

#ios #swift #parse-platform #parse-server

#iOS #swift #parse-платформа #parse-сервер

Вопрос:

Я пытаюсь определить, связан ли текущий пользователь с моим событием.

Другими словами, у меня есть события, к которым пользователи могут присоединиться. Я сохраняю PFRelation пользователя в таблице событий.

Я пытался

 self.event.users.query().getObjectInBackground(withId: currentUser.objectId!, block: { (object, error) in
    if let error = error {
        //The query returned an error
        print(error.localizedDescription)
    } else {
        //The object has been retrieved
        print(object)
    }
})
  

и

 do {
    let user = try self.event.users.query().getObjectWithId(currentUser.objectId!)

    if user == nil {
        currentUser.saveInBackground { (success: Bool, error: Error?) in
            eventsRelation.add(object)
        }

        usersRelation.add(currentUser)
        object.saveInBackground()


    }
} catch {
    print("Unexpected error: (error).")
}
  

Но каждый из них возвращает пользователя, несмотря ни на что. Даже если они не находятся в отношении.

Это как если бы они выполняли запрос для всей пользовательской таблицы.

Как я могу запустить его только для моего подмножества?

Ответ №1:

Ответ заключается в том, чтобы использовать связь для запроса.

Смотрите здесь дополнительную документацию

Итак, код будет выглядеть следующим образом:

 let usersRelation = event.relation(forKey: "users")

let usersRelationQuery = usersRelation.query()

usersRelationQuery.whereKey("objectId", equalTo: currentUser.objectId!)
usersRelationQuery.findObjectsInBackground(block: { (objects: [PFObject]?, error: Error?) in
    if let error = error {
        print(error.localizedDescription)
    } else if let objects = objects {
        // The find succeeded.
        print("Successfully retrieved (objects.count) scores.")
        // Do something with the found objects
        for object in objects {
            print(object.objectId as Any)
        }
    }
})
  

Обратите внимание, что event переменная выше взята из базы данных.

Если бы мы не включили whereKey часть, то она просто получила бы те, которые находятся в этих отношениях.