Запросы коллекций Cloud Firestore не работают

Поскольку Cloud Firestore является новым, у меня возникают проблемы с его использованием.

Мне нужно получить коллекцию всех пользователей и просмотреть ее. Но это не работает.

db.collection("users").get().then(function(querySnapshot){
      console.log(querySnapshot.data());
});

Он говорит:

querySnapshot.data не является функцией

И следующий код:

callFireBase(mobileToCheck){
        db.collection("users").where("mobile_no", '==', mobileToCheck).get().then(function(querySnapshot){
            if (querySnapshot.exists) {
                var userData = querySnapshot.data();
                var userId = querySnapshot.id;
                console.log(mobileToCheck + "Exist In DB");
            }else{
                console.log(mobileToCheck + "Do Not Exist In DB");
            }
        });
}

Всегда печатает

923052273575 Не существуют в БД

Даже если он существует, см. Для справки следующее изображение.

введите описание изображения здесь


person Noman Ali    schedule 06.10.2017    source источник
comment
@ Номан Али, вы нашли решение для этого запроса?   -  person Lahari Areti    schedule 09.07.2018


Ответы (1)


Я думаю, вы кое-что запутали, поскольку в querySnapshot нет data, но есть docs, у которых есть данные.

В вашем первом примере вы просите его вернуть все документы в коллекции. Вместо этого вам понадобится что-то вроде этого:

db.collection("users").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        console.log(doc.id, " => ", doc.data());
    });
});

Ключевое отличие заключается в том, что цикл документов в querySnapshot и консоль регистрируют данные из каждого документа.

Для вашего второго примера вы захотите проверить, является ли querySnapshot пустым, а не проверять, существует ли он.

db.collection("users").where("mobile_no", "==", mobileToCheck)
.get()
.then(function(querySnapshot) {
    if (querySnapshot.exists) {
        querySnapshot.forEach(function(doc) {
            console.log(doc.id, " => ", doc.data());
            var userData = doc.data()
            var userId = doc.id
            console.log(mobileToCheck + "Exist In DB");
        });
    } else {
        console.log(mobileToCheck + "Do Not Exist In DB");
    };
})
.catch(function(error) {
    console.log("Error getting documents: ", error);
});
person Dan McGrath    schedule 07.10.2017
comment
@ Dan McGrath Я использовал вышеуказанный запрос, но для меня он всегда говорит, что пользователь не существует. Но номер есть в базе данных. В чем проблема - person Lahari Areti; 09.07.2018