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

时间:2015-03-13 12:43:28

标签: couchdb pouchdb

我的情景:

我将大约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来存储文档的摘要部分吗? ..这是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我认为你要找的是attachments。如果您在文档中存储了大量200KB的数据,并且如果您不想在大多数时间将其全部读入内存,则附件将是完美的。

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

“摘要”操作更有效,因为它甚至不会从磁盘读取附件。