2015-06-26 63 views
0

我注意到我的數據庫的大小在刪除/恢復文檔與自動壓縮設置爲true後增加。我做錯了什麼?pouchdb大小增加whilte刪除和恢復文檔

這裏是我的代碼:

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); 
} 

回答

0

這並不是從PouchDB刪除文件的正確方法。

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

Please check here

好運

0

兩件事情:

1)即使您正在使用自動壓縮,數據庫的大小可能會增加,因爲底層的存儲引擎可能有它自己的怪癖。例如,如果您使用的是SQLite插件,則SQLite可能需要一個明確的VACUUM命令來減小大小。否則,它會減少磁盤大小,當它感覺。所以這取決於你如何衡量尺寸。

2)即使您正在使用自動壓縮,PouchDB也將始終存儲修訂版本散列舊版本。換句話說,它保存了文檔的整個修訂歷史記錄,通常由一個字符串散列數組表示。在實踐中,通過自動壓縮,這意味着對於每個修訂,數據庫將增加一個字符串的大小,如'19136B05-18F9-CCBF-96C1-6AC11EE9B06E'