PouchDB随修订而增长,即使revs_limit:1

问题描述 投票:3回答:1

我创建了带有不创建修订选项的PouchDB

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

当我检查Chrome中的indexedDB时,似乎将修订存储在此处。我想使db的大小保持较小,因为它在cordova项目中使用,不需要与CouchDB同步。

PouchDB.version ===“ 5.3.2”。这是PouchDB中的错误,还是我错过了smth?

以下代码演示了如何创建修订: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')
        });
    }
  }
});
pouchdb
1个回答
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中的错误。

© www.soinside.com 2019 - 2024. All rights reserved.