pouchdb 删除所有文档 javascript
pouchdb delete allDocs javascript
我是 pouchdb 的新手,我无法理解 API。
我想知道用 javascript 代码删除所有文档的最佳方法是什么。我尝试了很多东西,但没有任何效果。
我是否必须在 allDocs 方法中使用某些选项,例如:
db.allDocs({include_docs: true, deleted: true})
抱歉 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!
});
```
如果 promises 不可用,您可以使用回调和计数器,如果您希望收到所有行已被删除的通知。
db.allDocs().then(function(_response){
var toBeDeleted = _response.rows.length;
_response.rows.forEach(function(row){
db.remove(row.id, row.value.rev, function(err, success){
if(err){
console.error(err);
}
else if(success){
console.log("document with id %s was deleted", row.id);
}
if(--toBeDeleted == 0){
console.log("done");
}
});
});
});
如果你使用 pouchdb-erase npm 会很容易 package.The link 展示了如何在 nodejs 中使用它,但是我在 angular 2 和它的工作原理就像 charm.Here 是我的一些代码。
import * as PouchDB from 'pouchdb';
@Injectable()
export class DBProvider {
private _db;
private _data;
constructor() {
window["PouchDB"] = PouchDB;//Debugging
PouchDB.plugin(require('pouchdb-erase'));
}
truncate(){
this._db.erase().then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
});
}
}
根据 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);
});
你可以破坏并重新创建它
使用销毁()
var db = new PouchDB('mydb');
var reset = function() {
db.destroy().then(function() {
db = new PouchDB('mydb');
});
};
重置
reset()
我是 pouchdb 的新手,我无法理解 API。
我想知道用 javascript 代码删除所有文档的最佳方法是什么。我尝试了很多东西,但没有任何效果。
我是否必须在 allDocs 方法中使用某些选项,例如:
db.allDocs({include_docs: true, deleted: true})
抱歉 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!
});
```
如果 promises 不可用,您可以使用回调和计数器,如果您希望收到所有行已被删除的通知。
db.allDocs().then(function(_response){
var toBeDeleted = _response.rows.length;
_response.rows.forEach(function(row){
db.remove(row.id, row.value.rev, function(err, success){
if(err){
console.error(err);
}
else if(success){
console.log("document with id %s was deleted", row.id);
}
if(--toBeDeleted == 0){
console.log("done");
}
});
});
});
如果你使用 pouchdb-erase npm 会很容易 package.The link 展示了如何在 nodejs 中使用它,但是我在 angular 2 和它的工作原理就像 charm.Here 是我的一些代码。
import * as PouchDB from 'pouchdb';
@Injectable()
export class DBProvider {
private _db;
private _data;
constructor() {
window["PouchDB"] = PouchDB;//Debugging
PouchDB.plugin(require('pouchdb-erase'));
}
truncate(){
this._db.erase().then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
});
}
}
根据 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);
});
你可以破坏并重新创建它
使用销毁()
var db = new PouchDB('mydb');
var reset = function() {
db.destroy().then(function() {
db = new PouchDB('mydb');
});
};
重置
reset()