在Node JS上使用PouchDB文档附件

时间:2014-05-06 13:19:13

标签: javascript node.js angularjs pouchdb

我有一个集成了PouchDB的AngularJS应用程序。我想在PouchDB中添加一个文档,但从文档(下面)中不太清楚:

 db.putAttachment(docId, attachmentId, rev, doc, type, [callback]);
  

将二进制对象附加到文档。大多数PouchDB的API交易   使用JSON,但如果您正在处理大型二进制数据(例如   PNGs),如果您只是简单,可能会导致性能或存储损失   将它们包含为base64或hex编码的字符串。在这些情况下,你   可以将二进制数据存储为附件。有关详细信息,请参阅   关于附件的CouchDB文档。

     

示例用法:

 var doc = new Blob(["It's a God awful small affair"]);
 db.putAttachment('a', 'text', rev, doc, 'text/plain', function(err, res) {})
  

在Node中,您必须使用Buffer而不是Blob:

 var doc = new Buffer("It's a God awful small affair");

在我的应用程序中,我达到了我的目的:

var file = document.getElementById('file');

现在,如何使用Buffer将我的文件添加到数据库?另外,是否可以自动生成有效的docID,attachementID和rev?什么是MS办公文档的类型?

谢谢!

1 个答案:

答案 0 :(得分:1)

Blob肯定会让人感到困惑。对于PouchDB,我们编写了一个Blob shim library,欢迎您使用,而README还包含一些示例以帮助您入门。基本上你只需要传递blob数据和内容类型。

作为替代方案,您始终只需update()文档,并将附件作为base64编码的字符串添加到_attachments对象中,我通常会觉得这很容易。

编辑:哎呀,没看到你在Node.js上。查看this code,了解我们如何在PouchDB单元测试中制作缓冲区/ Blob。