#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
часть, то она просто получила бы те, которые находятся в этих отношениях.