我从couchdb(couchappy.com)复制了pouchDB。复制不是实时的。我只是在某些条件下运行它(例如,应用程序的加载/初始化,最终用户更改某些选项等)。
我删除了couchdb中的一些文档,这些文档在pouchdb中显示为“已删除”。然后我想压缩我的pouchdb:db.compact()调用。但是这个调用似乎对删除的文档没什么作用。
请注意,我已经压缩了counchdb。
我正在使用pouchdb 2.2.0。
你们有没有人知道什么是compact()调用实际上在pouchdb上做什么? 另外,如何摆脱“删除”的文档?
干杯,Alberto
答案 0 :(得分:5)
CouchDB和PouchDB总是保留一个"墓碑"修改已删除的文档,因为在复制过程中会发生时髦的事情。因此,那些被删除的文档在压缩过程中不会消失;压缩只是摆脱了比最新版本更旧的版本。
还有一个"清除"命令可以真正消除文件及其历史,但它非常激烈,大多数时候你不想这样做,除非你必须(source)。此外,它还不支持PouchDB,尽管它是in progress。
如果您只是担心文档占用空间,而不是简单地调用pouch.remove()
,您可以这样做:
pouch.get('mydoc').then(function (doc) {
var deletedDoc = {
_id : doc._id,
_rev : doc._rev,
_deleted : true
};
return pouch.put(doc);
}).then(function (res) {
// etc.
}).catch(function (err) {
// etc.
};