Поиск данных в базе данных Firebase - PullRequest
0 голосов
/ 04 мая 2018

Итак, я пытаюсь увидеть, существует ли текущий идентификатор пользователя в базе данных и хочет ли вернуть значение bool, возвращаемые данные имеют значение «Любое», а пользовательская константа является строкой. я получаю сообщение об ошибке "if" "Значение типа 'Any?' не имеет члена 'содержит' '

let user = Auth.auth().currentUser?.uid
let databaseRef = Database.database().reference()
databaseRef
    .child("Posts")
    .queryOrdered(byChild: "uid")
    .observeSingleEvent(of: .value, with: { (snapshot) in               
        print (snapshot.value)
        let returnData = snapshot.value
        if returnData.contains(user!) {
            print ("uid exists")
        }
    })

Я получаю это значение из базы данных

"-LBe5petr8MUtVZd9qWw" = {
        uid = zQRxvM3cwzQMewUtVamk8JQrEFJ3;
    };
})

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Если вы вернули моментальный снимок, UID должен существовать. Вы можете объявить Boolean, который будет обновляться при возврате данных. Если вам нужен uid, вам нужно разобрать его так:

var userDoesExist: Bool = false

    .observeSingleEvent(of: .value, with: { (snapshot) in               
        if let dict = snapshot.value as? [String : Any] {
            let userId = dict["uid"] as? String ?? ""
            print("Found uid: \(userId)")
            self.userDoesExist = true
        }
    })
0 голосов
/ 06 мая 2018

Правильный запрос:

databaseRef.child("Posts").queryOrdered(byChild: "uid").queryEqual(toValue: "yourUserId")

и просто отметьте if snapshot.exists() в блоке завершения.

0 голосов
/ 04 мая 2018

Просто найдите сообщения / пользователя / uid, и если снимок пуст, пользователь не существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...