Как проверить, верно ли значение узла БД Firebase, используя swift? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующая структура БД Firebase (см. Рис.), Которая создается, когда пользователь отправляет compliment другому пользователю.

  1. Комплимент сохраняется в compliments с автоматически сгенерированным идентификатором
  2. compliment.key также сохраняется в users-compliments, в senderID / receiveIDID / затем в паре «compmentID»: «булево», чтобы указать, является ли он «активным»

Я хочу проверить, существует ли «активный» комплимент, прежде чем разрешить отправить другой тому же пользователю.

Но следующий запрос приводит к выводу null, даже если есть дочерний узел со значением 1.

Что я здесь не так делаю?

Запрос:

REF_USERS_COMPLIMENTS.child(currentUid).child(forId).queryEqual(toValue: "1").observeSingleEvent(of: .value) { (snapshot) in
        print("snap: \(snapshot.value)")
    }

Вывод на консоль:

snap: Optional(<null>)

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

При использовании queryEqual() вы должны комбинировать его с queryOrderedBy. В вашем случае это будет queryOrderedByValue(), потому что вы хотите сравнить значение:

REF_USERS_COMPLIMENTS.child(currentUid).child(forId).queryOrderedByValue().queryEqual(toValue: "1").observeSingleEvent(of: .value) { (snapshot) in
    print("snap: \(snapshot.value)")
}

Более подробную информацию об этом можно найти в документах .

0 голосов
/ 04 июля 2018

Попробуйте это:

REF_USERS_COMPLIMENTS.child(currentUid).child(forId).observeSingleEvent(of: .value) { (snapshot) in
       print("snap: \(snapshot.value)")
       if let _ = snapshot.value as? NSNull {
         // do your thing
       }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...