javascript - 对象不支持属性或方法'forEach
问题描述
我尝试从 Firestore 上的 Firestore 获取数据,但它返回此对象没有 foreach 方法。我还尝试在下面的控制台语句中进行控制台:console.log("this")
不起作用,但另一个 console.log 起作用。这是代码:
let fstore = firebase.firestore();
fStore
.collection('user-info')
.doc(userID)
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
if (doc.id != userID) {
// doc.data() is never undefined for query doc snapshots
user_list2.push(doc.data());
console.log('this');
}
});
});
fStore
.collection('User')
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
if (doc.id != userID) {
// doc.data() is never undefined for query doc snapshots
user_list.push(doc.data());
console.log(user_list);
console.log(user_list.length);
}
});
});
解决方案
fStore.collection("user-info").doc(userID).get()
不会产生 QuerySnapshot。它会生成一个 DocumentSnapshot,因为它只能返回一个文档 - 您在doc()
. DocumentSnapshot 没有 forEach 方法,因为没有什么可迭代的。
相反,您应该只在获得的对象上调用 data() :
fStore
.collection('user-info')
.doc(userID)
.get()
.then(function (snapshot) {
const data = snapshot.data();
})
您的第二个查询可以返回多个文档,因为它要求集合中的每个文档,因此您会得到一个 QuerySnapshot intead。
这里的底线是get()
DocumentReference 只能返回一个文档,而get()
CollecitonReference 或 Query 可以返回多个文档。它们是具有不同结果的不同类型的查询。
推荐阅读
- 11ty - 在 11ty 中添加前沿数据的正确方法是什么?
- python - 匹配以 .md 结尾的括号之间的文本
- javascript - 模态框在第一次实例后未打开
- c++ - C ++,相同的代码将无法正常工作 btw CLion 和 Visual Studio
- python - tkinter 条目填充从字典中选择的值
- kubernetes - kubernets 内的 kakfa 代理可以被 k8s 集群外的客户端寻址
- python-3.x - Python 3 原始套接字捕获的数据包长度短了 2 个字节
- excel - 使用 ';' 从文本字符串创建单个单元格列表 分号分隔符
- oracle - 需要每周自动将excel数据加载到数据库表中
- .net - 无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于