javascript - 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());
});
解决方案
在您的第一个代码示例中,您假设快照回调附加到此:
db.collection("Slides")
类似于附加到这个:
db.collection("Slides").doc("GYUzWG6jcOPob725wbnF")
事实上,它们根本不一样。
第一个将查询命名集合中的所有文档,它会在回调中为您提供一个QuerySnapshot对象。该对象没有 data() 方法,您需要对其进行迭代以获取所有文档快照。
第二个将只查询命名集合中的命名文档,您将获得一个DocumentSnapshot对象。
由于您没有说出您要完成的工作,因此我无法推荐您应该做什么。我只能说,您显示的两个代码位根本不一样,您希望它们的行为有所不同。
推荐阅读
- r - 在查看器/html中绘制的ggmap太小了
- r - 使用 if 和 for 语句在给定条件的序列中打印数字
- google-cloud-platform - gcloud 只能使用私有镜像创建实例
- jquery - Ajax 请求后刷新页面变量而不重新加载页面
- jsf - 在 adf 12c 中刷新 jsf 页面上的 oracle 数据库中的数据
- python - Flask 甚至不检查文件就返回响应
- android - 首次成功登录后自动登录网页
- php - PHPSpreadsheet:比例必须大于或等于1
- python - DateUtil.Parser 出错:无法导入名称“isoparse”
- java - 无法解决多个构建失败错误