pouchdb大小增加whilte删除和恢复文档

时间:2015-06-26 10:46:24

标签: pouchdb

我注意到在自动压缩设置为true的情况下删除/恢复文档后,我的数据库大小正在增加。我做错了什么?

这是我的代码:

var db = new PouchDB("myDB", {adapter: "idb", auto_compaction: true});
var docs = [{_id: "0", name: "foo1"}, {_id: "1", name: "foo2"}];
db.bulkDocs(docs).then(function() {
    db.allDocs({include_docs: true}).then(function(result) {
        docs = result.rows.map(function(row) {
            return row.doc;
        });   
    };
};

function remove() {
    for (var i in docs) {
        docs[i]._deleted = true;
    } 
    return db.bulkDocs(docs);           
};

function restore() {
    for (var i in docs) {
        delete docs[i]._deleted;
        delete docs[i]._rev;
    } 
    return db.bulkDocs(docs);   
}

// Calling this function increases the size of the DB
function test() {
    return remove(docs).then(restore);
}

2 个答案:

答案 0 :(得分:0)

这不是从PouchDB中删除文档的正确方法。

使用:db.remove(doc, [options], [callback])

Please check here

祝你好运

答案 1 :(得分:0)

两件事:

1)即使您使用自动压缩,数据库大小也可能会增加,因为底层存储引擎可能有自己的怪癖。例如,如果您使用的是SQLite插件,则SQLite可能需要使用显式VACUUM命令来减小大小。否则它会在感觉到它时减少磁盘大小。所以这取决于你如何测量尺寸。

2)即使您使用自动压缩,PouchDB也将始终存储旧版本的版本哈希。换句话说,它记录了文档的整个修订历史记录,通常由字符串哈希数组表示。在实践中,使用自动压缩,这意味着对于每个修订版本,数据库将增加类似'19136B05-18F9-CCBF-96C1-6AC11EE9B06E'的字符串的大小。