从 pouchdb 中只获取存储文档的一部分(不是获取整个文档,就像我们只读取 table 的所需列一样)

Get only a part of the stored document from pouchdb (not fetching the full document, just like how we read only the required columns of a table)

我的场景:

我将大约 4000 个文档存储到我的 pouchdb 数据库中。

每个文件有两部分:

a) 摘要部分和

b) 数据部分(每个文档的大小相当大,大约 200kb)

在我的应用程序中,我有一个摘要页面,我只在其中显示数据库中所有文档的摘要。用户可以从摘要页面单击文档,然后我会在单独的页面中显示所选文档的完整详细信息。

我的问题:

对于摘要页面,我只想提取 pouchdb 中文档的摘要部分。但是如果不从 pouchdb 中获取完整的完整文档,我不知道该怎么做(每个文档的主要数据部分可能很大 200kb)。

以下代码将把所有文档放入数据库中,我担心它会给我带来巨大的性能问题。

db.allDocs({
  include_docs: true, 
 }, function(err, response) {
  if (err) { return console.log(err); }
  // handle result
});

解决我的问题的最佳策略是什么?.. 我应该创建一个单独的 summarydb 来存储文档的摘要部分吗? ..这是唯一的解决方案吗?

我想你要找的是attachments。如果你的文档中存储了 200KB 的大数据,并且大多数时候你不想将其全部读入内存,那么附件将是完美的选择。

默认情况下,当您从 PouchDB 读取文档时,它只会获取附件 摘要(请参阅 the attachments guide)。如果你想要完整的数据,你可以使用 getAttachment() 或任何读取操作(get()/allDocs()/query()/changes())和 {attachments: true} .

"summary"操作效率更高,因为它甚至不从磁盘读取附件。