pouchdb删除allDocs javascript

K20*_*K20 15 javascript pouchdb

我是pouchdb的新手,我无法理解API.

我想知道用javascript代码删除所有文档的最佳方法是什么.我尝试了许多东西,但没有任何接缝可以工作.

我是否必须在allDocs方法中使用一些选项,如:

db.allDocs({include_docs: true, deleted: true})
Run Code Online (Sandbox Code Playgroud)

nla*_*son 24

对不起,API太混乱了!如果您能告诉我们如何改进它,那将会很有帮助.:)

你可以做db.destroy(),这将完全删除数据库但复制删除,也可以单独remove()的所有文件:

db.allDocs().then(function (result) {
  // Promise isn't supported by all browsers; you may want to use bluebird
  return Promise.all(result.rows.map(function (row) {
    return db.remove(row.id, row.value.rev);
  }));
}).then(function () {
  // done!
}).catch(function (err) {
  // error!
});
Run Code Online (Sandbox Code Playgroud)

```

  • 以防将来有人偶然发现这段代码.@nlawson的代码工作,它只是缺少一个`)`来关闭`.all(`函数调用.这是为了你方便的代码:`db.allDocs().然后(function(result){return Promise. all(result.rows.map(function(row){return db.remove(row.id,row.value.rev);}));}).then(...` (3认同)

Dom*_*erg 7

基于nlawson的答案,您也可以使用bulkDocs,因此您不必为每个文档运行Pouch操作:

db.allDocs({include_docs: true}).then(allDocs => {
  return allDocs.rows.map(row => {
    return {_id: row.id, _rev: row.doc._rev, _deleted: true};
  });
}).then(deleteDocs => {
  return db.bulkDocs(deleteDocs);
});
Run Code Online (Sandbox Code Playgroud)