在 Firebase 中存储大型对象并仅访问其中的一部分

2023-12-04

我想知道在以下情况下,在 Firebase 中存储数据的加载时间最高效的方法是什么:

有多个文本文档,每个文档由多个段落组成,如下所示:

doc1 {
  title: 'first doc',
  author: 'John Doe',
  creation_date: 1234567890,
  paragraphs: {
    p001{
      text:'This is the first paragraph',
      …}
    p002{
      text:'This is the second paragraph',
      …}
  }
}

如果我想显示其中一个文档,我只需获取数据快照并获取整个对象doc1来自网络。

一旦我只想显示title但所有文件。有没有办法排除某些孩子被加载?或者是否需要重构数据库并收集overview对象,只包含所有文档的键和标题?


从 Firebase 数据库检索数据时,它始终返回完整的节点。因此,虽然您只能获取文档的标题(使用/documents/doc1/title)您无法仅获取文档列表的标题。

Firebase 文档建议您不要将不同类型的数据嵌套在公共根下。原因之一正是您现在所要求的:您经常希望检索一本书的元数据而不检索其余内容。

因此,另一种(也是更常见的)数据建模方法是:

documents: {
    doc1: {
      title: 'first doc',
      author: 'John Doe',
      creation_date: 1234567890,
    },
    doc2: {
      title: 'second doc',
      author: 'nehalem',
      creation_date: 1234567891,
    }
},
paragraphs: {
    doc1: {
      p001{
        text:'This is the first paragraph',
        …}
      p002{
        text:'This is the second paragraph',
        …}
    },
    doc2: {
      p001{
        text:'This is the first paragraph',
        …}
      p002{
        text:'This is the second paragraph',
        …}
    }
}

现在您可以通过阅读/查询来获取显示列表的标题、作者和创建日期/documents然后通过阅读获取特定书籍的段落/paragraphs/doc1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Firebase 中存储大型对象并仅访问其中的一部分 的相关文章

随机推荐