node.js - 在 NodeJS 上的 Firestore 中获取集合中的所有数据

标签 node.js firebase collections google-cloud-firestore

我目前开始使用 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 中还没有办法做到“不循环并单独获取所有内容”。

你必须:

  1. 使用 get()forEach() 方法循环客户端集合,如下所示:https://firebase.google.com/docs/firestore/query-data/get-data#get_all_documents_in_a_collection
  2. 对于每个客户端文档,以相同的方式对其 apiKeys 集合进行循环。

您可能应该使用 Promise.all() 并行执行不同的异步 get() 操作。


与使用标准 JavaScript 库相比,使用 Node.js 可能拥有的一个小优势是,您可以使用 getCollections() 方法列出文档引用的子集合(即不适用于 Web/JavaScript)。但由于您的 apiKeys 集合似乎有一个已知的名称,因此这不会带来任何真正的区别。

关于node.js - 在 NodeJS 上的 Firestore 中获取集合中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741109/

相关文章:

javascript - 在 React Native 应用程序上检索 Firebase 数据时出现问题

kotlin - Kotlin 1.4 中 sumOf() 和 sumBy() 有什么区别?

c# - 在 C# 中使用 F# 数据类型

javascript - Gulp 在 Windows 上运行失败 |错误消息 : Microsoft JScript compilation error, 无效字符

javascript - 为什么 `lodash.map([' A'], String.prototype.toLowerCase.call)` 不起作用?

node.js - 在 Mongoose 中保存嵌套模式

android - DatabaseException : Expected a Map while deserializing, 但得到了一个类 java.lang.Long

ios - Swift:从共享扩展将文件上传到 Firebase 存储

node.js - Bash 中的循环未完成

java - 使用集合对象构建结果集