【问题标题】:Is there a way to get all revisions of a document in PouchDB when using the change feed?使用更改提要时,有没有办法在 PouchDB 中获取文档的所有修订?
【发布时间】:2015-11-02 21:24:08
【问题描述】:

我现在正在摆弄 PouchDB。我使用它作为一种在本地存储数据而不将其链接到 CouchDB 的方式。我一直在尝试为单个文档创建一个还原/撤消方法。为此,我想使用“doc”的先前版本。我在阅读 PouchDB 文档时遇到了更改提要,起初这似乎是获取所有“文档”的所有修订的一种方式。但是,在尝试获取“文档”的所有修订版之后,我只得到了最新的修订版。我尝试了以下方法来进行更改:

db.changes({
    since: 0,
    style: 'all_docs',
    include_docs: true // eslint-disable-line camelcase
  }).then(function(results) {
    console.log(results);
  }); 

TL;DR 我如何在 PouchDB 中获取一个(或所有)文档的所有修订版?

【问题讨论】:

    标签: javascript angularjs pouchdb


    【解决方案1】:

    macrog 的帮助下,我找到了一种方法来做我想做的事。简短摘要 我想要一种方法来获取我的文档的所有修订,包括那些已被删除的。这是我现在使用的:

    db.get(String(id), {
        revs: true, 
        open_revs: 'all' // this allows me to also get the removed "docs"
      }).then(function(found) {
        console.log(found);
      });
    

    当然,我没有使用 db.changes() 来获取文档的所有修订。但至少我能够做我想做的事。

    【讨论】:

    • 嘿,很高兴你已经成功地做到了你想要的,试试@nlawson 解决方案,这家伙知道他在说什么! :)
    【解决方案2】:

    尝试其中一个选项 - 它来自 pouchdb docs

    db.get(docId, [options], [callback])

    检索由 docId 指定的文档。

    选项 除非另有说明,否则所有选项默认为 false。

    options.rev:获取文档的特定修订版本。默认为成功修订版(请参阅 CouchDB 指南)。

    options.revs:包含文档的修订历史记录。

    options.revs_info:包括文档修订列表及其可用性。

    options.open_revs:如果 open_revs="all" 则获取所有叶修订或获取 open_revs 数组中指定的所有叶修订。叶子将按照输入数组中指定的顺序返回。

    【讨论】:

    • 谢谢,这让我更近了一步。但是,遗憾的是,它对删除/删除“文档”没有帮助。
    • 没问题,乐于助人!你如何删除文档?用 db.remove(...) ??尝试将 put 作为更新并设置 "_deleted":true 我认为(不确定)您应该使用 _changes 获取它们
    • 我正在使用 db.remove(...),因为据我所知,如果我这样做或通过执行 db.put({_deleted : 真的, ...})。不太清楚您对 _changes 的意思...您愿意详细说明吗?
    • 您可以使用keys 参数和allDocs() 找到已删除的文档。 (是的,这很不直观,但keys 会获取已删除的文档,而其他所有选项都不会。)
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2020-02-27
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多