Firstore数据不起作用

时间:2019-03-15 05:51:01

标签: javascript google-cloud-firestore

我无法提取集合中的数据,出现此错误

  

未捕获的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();

我找到解决方案,如果我传递了修订ID,则下面的代码有效 (尽管ID是由Firestore随机生成的)

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

Firestore enter image description here

3 个答案:

答案 0 :(得分:1)

在您的第一个代码示例中,您假设快照回调与此相关:

db.collection("Slides")

类似于与此相关的内容:

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

实际上,它们根本不一样。

第一个将查询命名集合中的所有文档,并在回调中为您提供QuerySnapshot对象。该对象没有data()方法,您需要对其进行迭代以获取所有文档快照。

第二个查询将仅查询命名集合中的命名文档,您将获得一个DocumentSnapshot对象。

由于您没有说明要完成的工作,因此我不建议您执行该操作。我只能说您所显示的两个代码位完全不同,并且您希望它们的行为有所不同。

答案 1 :(得分:0)

由于错误消息看起来像数据不是函数,这意味着在将其分配给变量时不必使用括号,因此将您的分配更改为此行: const myData = doc.data;

答案 2 :(得分:0)

实际上,我的方法是错误的,请使用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());
    });
});