Pouchdb 简明教程

PouchDB - Deleting Attachment

您可以使用 removeAttachment() 方法从 PouchDB 删除附件。

Syntax

下面是 removeAttachment() 方法的语法。对于此方法,您必须传递文档 ID、附件 ID 和 _rev 值。此方法还接受可选回调函数。

db.removeAttachment ( docId, attachmentId, rev, [callback] );

Example

假设 PouchDB 中存在 ID 为 001 的文档,该文档包含 ID、姓名、年龄、员工职位以及如下所示的附件。

{
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: {
      'att_1.txt': {
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA=='
      }
   },
   _id: '001',
   _rev: '2-cdec6c9f45ddbee7d456945654742d43'
}

下面是使用 removeAttachment() 方法从存储在 PouchDB 中的此文档 001 删除附件的示例。

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

//Creating the database object
var db = new PouchDB('my');
db.removeAttachment('001', 'att_1.txt', '2-cdec6c9f45ddbee7d456945654742d43',
   function(err, res) {
   if (err) {
      return console.log(err);
   } else {
      console.log(res+"Attachment Deleted successfully")
   }
});

将上述代码另存为名为 Remove_Attachment.js 的文件。打开命令提示符,再使用 node 执行 JavaScript 文件,具体如下。

C:\PouchDB_Examples >node Remove_Attachment.js

此操作会移除文档的附件,并在控制台上显示消息,如下所示。

Attachment deleted successfully

删除后,通过执行以下代码验证文档内容。

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

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

//Reading the Document
db.get('001',{attachments: true}, function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

将此代码另存为 read.js ,并执行该代码。执行后,您会得到附件删除后的文档内容,如下所示。

{
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '001',
   _rev: '3-da775487a6ed0495f2e49c543384f8e8'
}

Removing Attachment from a Remote Document

您还可以删除存储在服务器(CouchDB)远程的现有文档的附件。

要执行此操作,您需要传入 CouchDB 中的数据库路径而不是数据库名称,该路径包含要读取的文档。

Example

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

removing attachment from remote database

如果您选择名为 my_database 的数据库,则可以查看如下所示的内容。

removing attachment database

假设在此文档中附有如下所示的附件。

removing attachment

以下是一个示例,用于删除 001 中提到的、存在于名为 my_database 的数据库中的附件,该附件存储在 CouchDB 服务器中。

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

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

db.removeAttachment('001', 'att_1.txt', '2-049f1c4ffa54576ec0947b65e34de423',
   function(err, res) {
   if (err) {
      return console.log(err);
   } else {
      console.log(res+"Attachment Deleted successfully")
   }
});

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

C:\PouchDB_Examples >node Remote_Delete_Attachment.js

这会删除现有附件并显示以下消息。

Attachment Deleted successfully

如果您再次打开文档,您会发现附件已经被删除,如下面的屏幕截图中所示。

attachment deleted