我无法提取集合中的数据,出现此错误
未捕获的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());
});
答案 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());
});
});