我创建了带有不创建修订选项的PouchDB
var db = new PouchDB('test1', {
revs_limit: 1,
auto_compaction: true
});
当我检查Chrome中的indexedDB时,似乎将修订存储在此处。我想使db的大小保持较小,因为它在cordova项目中使用,不需要与CouchDB同步。
PouchDB.version ===“ 5.3.2”。这是PouchDB中的错误,还是我错过了smth?
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')
});
}
}
});
[AFAIK,这是a closed bug在2016年2月部分修复,然后在2016年6月完全修复。
设置auto_compaction: true
时,使用revs_limit:1
是多余的(因为将不会压缩任何内容)。 (将两者一起使用会触发错误,但在2016年已修复。)
如another closed bug report底部所述,即使您使用revs_limit
或auto_compaction
,Chrome也会看起来内存正在增长。但是当您达到4MB时,它将一口气进行压缩。这是设计使然,因此pouchDB中的错误也不是Chrome中的错误。