【发布时间】:2021-03-27 07:11:34
【问题描述】:
我阅读了几份文档,但我不明白为什么当我使用 Firebase (Cloud Firestore) 读取集合中的所有数据时,我应该在代码中使用额外的层 (foreach)。
这是原始文档:
https://firebase.google.com/docs/firestore/query-data/get-data#get_all_documents_in_a_collection
这是我的代码:
async loadUsers(): Promise<User[]> {
const users = new Array<User>();
const snapshot = await this.firestore.collection('users').get();
snapshot.forEach((collection) => {
collection.docs.forEach(doc => {
users.push(doc.data() as User);
});
});
return users;
}
据我了解,它应该像这样工作:
async loadUsers(): Promise<User[]> {
const users = new Array<User>();
const snapshot = await this.firestore.collection('users').get();
snapshot.forEach(doc => {
users.push(doc.data() as User);
});
return users;
}
错误信息:
“'QuerySnapshot' 类型上不存在属性 'data'。”
【问题讨论】:
-
我很困惑。您的第一个代码示例看起来并不正确。如果您要做的只是迭代集合中的文档,则不需要第二个 forEach 循环。第二个代码示例看起来正确。请编辑问题以更详细地解释什么不符合您的预期。
-
@DougStevenson 是的,你是对的,第一个代码示例看起来不太好,但它以某种方式工作,而第二个则没有。这就是我想了解的……为什么?
标签: node.js firebase google-cloud-firestore