3

我从 couchdb (couchappy.com) 复制了 pouchDB。复制不是实时的。我只是在某些条件下运行它(例如应用程序的加载/初始化,最终用户更改某些选项等)。

我已经删除了 couchdb 中的一些文档,这些文档在 pouchdb 中显示为“已删除”。然后我想压缩我的 pouchdb: db.compact() 调用。但是这个调用似乎对删除的文档没有多大作用。

请注意,我已经压缩了 counchdb。

我正在使用 pouchdb 2.2.0。

你们中有人知道在 pouchdb 上实际调用 compact() 是什么吗?另外,如何摆脱“已删除”的文档?

干杯,阿尔贝托

4

1 回答 1

5

CouchDB 和 PouchDB 总是为已删除的文档保留一个“墓碑”修订版,因为否则在复制过程中会发生一些奇怪的事情。所以那些被删除的文档在压缩过程中不会消失;压缩只是摆脱了比最新版本更旧的任何修订。

还有一个“清除”命令可以真正消除文档及其历史记录,但它非常激烈,而且大多数时候你不想这样做,除非你必须这样做(来源)。此外,虽然它正在进行中,但 PouchDB 尚不支持它。

如果您只是担心文档占用空间,而不是简单地调用pouch.remove(),您可以这样做:

pouch.get('mydoc').then(function (doc) {
  var deletedDoc = {
    _id      : doc._id,
    _rev     : doc._rev,
    _deleted : true
  };
  return pouch.put(doc);
}).then(function (res) {
  // etc.
}).catch(function (err) {
  // etc.
};
于 2014-05-09T19:27:49.657 回答