Pouchdb удалить allDocs javascript
Я новичок в pouchdb, и я не понимаю API.
Я хочу знать, что является лучшим способом удалить все документы с помощью javascript-кода. Я пробую много чего, но ничего не работает.
Должен ли я использовать некоторые параметры в методе allDocs, например:
db.allDocs({include_docs: true, deleted: true})
Ответы
Ответ 1
Извините, 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!
});
`` `
Ответ 2
На основе nlawson Answer вы также можете использовать 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);
});
Ответ 3
Если 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");
}
});
});
});
Ответ 4
Было бы легко, если бы вы использовали 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);
});
}
}