首页 > 解决方案 > Firstore 数据不起作用

问题描述

我无法在收集时提取数据,出现此错误

未捕获的类型错误: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();

如果我通过 fix id 然后在下面的代码工作中找到解决方案(尽管 ID 是由 firestore 随机生成的)

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

火库 在此处输入图像描述

标签: javascriptgoogle-cloud-firestore

解决方案


在您的第一个代码示例中,您假设快照回调附加到此:

db.collection("Slides")

类似于附加到这个:

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

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

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

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

由于您没有说出您要完成的工作,因此我无法推荐您应该做什么。我只能说,您显示的两个代码位根本不一样,您希望它们的行为有所不同。


推荐阅读