📜  PouchDB-删除批处理

📅  最后修改于: 2020-11-26 06:53:55             🧑  作者: Mango


您可以使用bulkDocs()方法立即删除PouchDB中的一系列文档。为此,您需要创建一个要删除的文档数组,每个文档应包含_id_rev 。除了这些之外,您还必须添加另一个键值对_deleted:true

假设在本地存储在PouchDB中的名为my_database的数据库包含3个文档,即doc1,doc2,doc3,其内容如下。

doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}

并说,我们必须删除所有三个文档。然后,首先需要获取它们的_rev值。因此,请使用以下代码获取这些文档的内容。

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

将上面的代码另存为bulk_fetch.js 。执行上面的程序将为您提供数据库中文档的_id和_rev值,如下所示。

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' } 
   } 
]

现在,您可以使用它们各自的_id_rev值删除文档,如下所示。

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing the document
docs = [{_id : '001', _rev: '2-77f3a9974dd578d12f3f2a33aae64c8d', _deleted : true },
      {_id : '002', _rev: '2-43966007568ce9567c96422195fcfa0d', _deleted : true }, 
      {_id : '003', _rev: '2-6c5349652527f4f39583ff14f23cd677',_deleted : true }]

//Deleting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log(response+"Documents deleted Successfully");
   }
});

将以上代码保存在名为Delete_All_Document.js的文件中。打开命令提示符,并使用node执行JavaScript文件,如下所示。

C:\PouchDB_Examples >node Delete_All_Document.js

这将删除本地存储的名为my_database的数据库中存在的所有文档,并显示以下消息。

Documents Deleted Successfully

现在,如果执行bulk_fetch.js程序,则可以在控制台上看到一个空括号,表明数据库为空,如下所示。

[]

从远程数据库删除批处理

您可以从远程存储在服务器(CouchDB)上的数据库中更新所有文档。

为此,您需要将路径传递到CouchDB中的数据库,而不是数据库名称,该数据库包含要读取的文档。

假设在CouchDB服务器中有一个名为my_database的数据库。然后,如果您使用URL http://127.0.0.1:5984/_utils/index.html验证CouchDB中的数据库列表,则将获得以下屏幕截图。

从远程数据库删除批处理

如果我们选择名为my_database的数据库,则可以观察到它包含3个文档,如以下屏幕快照所示。

删除批次

以下是删除存储在CouchDB服务器中的名为my_database的数据库中存在的所有文档的示例。

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Preparing the document
docs = [{_id : '001', _rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39', _deleted : true },
      {_id : '002', _rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0', _deleted : true },
      {_id : '003', _rev: '2-fa113149ba618eda77f73072974a2bc1',_deleted : true }]

//Deleting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Documents deleted Successfully");
   }
});

将上面的代码保存在名为Remote_delete_AllDocuments.js的文件中。打开命令提示符,并使用node执行JavaScript文件,如下所示。

C:\PouchDB_Examples >node Remote_Delete_AllDocuments.js

这将删除存储在CouchDB中的名为my_database的数据库中存在的所有给定文档的内容,并显示以下消息。

Documents Deleted Successfully