即使在revs_limit:1时,PouchDB也会随着修订而增长

时间:2016-05-12 09:30:16

标签: pouchdb

我创建了PouchDB,但没有创建修订版

var db = new PouchDB('test1', {
  revs_limit: 1,
  auto_compaction: true
});

当我在chrome中检查indexedDB时,看起来修改存储在那里。我想保持db的大小,因为它在cordova项目中使用,不需要与CouchDB同步。

PouchDB.version ===" 5.3.2"。
这是PouchDB中的一个错误,还是我错过了什么?

以下代码演示了如何创建修订: enter image description here

function upsert(id, title) {
  var obj;

  return db.get(id)
    .then(function (doc) {
      obj = { // UPDATE
        _id: id,
        _rev: doc._rev,
        title: title
      };
      return db.put(obj)
        .then(function (res) {
          console.log('updated', res);
        })
        .catch(function (e) {
          console.error('update error', obj, e);
        });
    })
    .catch(function (e) {
      if (e.status === 404) {
        obj = { // INSERT
          _id: id,
          title: title
        };
        return db.put(obj)
          .then(function (res) {
            console.log('inserted', res);
          })
          .catch(function (e) {
            console.error('insert error', obj, e);
          });
      }
      console.error('another error', e);
    });
}

var db = new PouchDB('test1', {
  revs_limit: 1,
  auto_compaction: true
});
var id = '666-' + (new Date()).toISOString();
var serializer;
console.log('Test started with\nid = ' + id);
db.then(function () {
  for (var i = 0; i < 5; i++) {
    if (!serializer) {
      serializer = upsert(id, 'Heroes');
    } else {
      serializer = serializer
        .then(function () {
          return upsert(id, 'Heroes')
        });
    }
  }
});

1 个答案:

答案 0 :(得分:0)

AFAIK,此问题a closed bug于2016年2月部分修复,然后于2016年6月完全修复。

设置auto_compaction: true时,使用revs_limit:1是多余的(因为将不会压缩任何内容)。 (将两者一起使用会触发错误,但此问题已在2016年修复。)

another closed bug report底部所述,即使您使用revs_limitauto_compaction,Chrome也会看起来内存在增长。但是当您达到4MB时,它将一口气进行压缩。这是设计使然,因此pouchDB中的错误也不是Chrome中的错误。

(只是认为我会回答在讨论过程中花费15分钟来救下一个人!)