我目前开始使用 Firestore,但遇到了一些无法找到答案的问题。
我有以下集合/文档设置:
* client (collection)
- client1 (document)
[...]
- client2 (document)
name: placholder
projectId: 1234
url: string
* apiKeys (collection)
- platform1 (document)
name: name
key: key
- platform2 (document)
name: name
key: key
我想做的是获取完整的集合及其所有文档和子集合。最后,我的目标是将其保存在这样的对象中:
"client": {
"client1": {...},
"clinet2": {
"name": "name",
"projectId": 1234,
"url": "http://localhost:5001",
"apiKeys": {
"platform1": {
"name": "name",
"apiKey": "key"
},
"platform2": {
"name": "name",
"apiKey": "key"
}
}
}
}
Firestore 可以做到这一点吗?如果是,我该如何做到这一点(最好不要循环并单独获取所有内容)?任何教程、文档或现有代码将不胜感激!
谢谢, 一月
最佳答案
目前,在 Node.js 中还没有办法做到“不循环并单独获取所有内容”。
你必须:
- 使用
get()
和forEach()
方法循环客户端集合,如下所示:https://firebase.google.com/docs/firestore/query-data/get-data#get_all_documents_in_a_collection - 对于每个客户端文档,以相同的方式对其
apiKeys
集合进行循环。
您可能应该使用 Promise.all()
并行执行不同的异步 get()
操作。
与使用标准 JavaScript 库相比,使用 Node.js 可能拥有的一个小优势是,您可以使用 getCollections()
方法列出文档引用的子集合(即不适用于 Web/JavaScript)。但由于您的 apiKeys 集合似乎有一个已知的名称,因此这不会带来任何真正的区别。
关于node.js - 在 NodeJS 上的 Firestore 中获取集合中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741109/