Данные Firstore не работают - PullRequest
0 голосов
/ 15 марта 2019

Я не могу получить данные при сборе, получаю эту ошибку

Uncaught TypeError: doc.data не является функцией

var db = firebase.firestore();
const docRef = db.collection("Slides");

getRealData = function() {
  docRef.onSnapshot(function(doc) {
    const myData = doc.data();
    console.log(myData);
  });
};

getRealData();

Я нахожурешение, если я передам исправление идентификатора, то ниже код работает (хотя идентификатор генерируется случайным образом пожарным магазином)

db.collection("Slides").doc("GYUzWG6jcOPob725wbnF")
.onSnapshot(function(doc) {
    console.log("Current data: ", doc.data());
});

Firestore enter image description here

Ответы [ 3 ]

1 голос
/ 15 марта 2019

В вашем первом примере кода вы предполагаете, что обратный вызов снимка, прикрепленный к этому:

db.collection("Slides")

, похож на тот, который прикреплен к этому:

db.collection("Slides").doc("GYUzWG6jcOPob725wbnF")

Фактическиони совсем не одинаковы.

Первый запросит ВСЕ документы в именованной коллекции, и он даст вам объект QuerySnapshot в обратном вызове.У этого объекта нет метода data (), и вам нужно выполнить его итерацию, чтобы получить все снимки документа.

Второй запросит только именованный документ в именованной коллекции, и вы получите DocumentSnapshot Возврат объекта.

Поскольку вы не сказали, чего пытаетесь достичь, я не могу рекомендовать, что вам следует делать.Все, что я могу сказать, это то, что два кода, которые вы показали, совсем не похожи, и вы ожидаете, что они будут вести себя по-разному.

0 голосов
/ 15 марта 2019

На самом деле, мой подход был неверным, используйте функцию get для получения всех данных.

docRef.get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " => ", doc.data());
    });
});
0 голосов
/ 15 марта 2019

Если сообщение об ошибке выглядит так, как будто данные не являются функцией, это означает, что вам не нужно использовать скобки при назначении их переменной, поэтому измените свое назначение на эту строку: const myData = doc.data;

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