在NodeJS上使用PouchDB进行文档附件

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

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

将二进制对象附加到文档。 PouchDB的大部分API都处理JSON,但是如果你处理的是大的二进制数据(比如PNG),那么如果你简单地把它们包含为base64或者hex编码的string的话,你可能会遭受性能或者存储惩罚。 在这些情况下,您可以将二进制数据存储为附件。 有关详细信息,请参阅附件上的CouchDB文档。

用法示例:

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

在Node中,您必须使用缓冲区而不是Blob:

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

在我的应用程序中,我已经达到了以下的地步:

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

现在,我如何使用缓冲区来将我的文件添加到数据库? 另外,是否有可能自动生成一个有效的docID,attachementID和rev? 那么MS Office文档的types是什么?

谢谢!

Blob肯定会混淆工作。 对于PouchDB,我们编写了一个欢迎使用的Blob Shim库 ,该自述文件还包含一些示例以帮助您入门。 基本上你只需要传递blob数据和内容types。

或者,您可以随时update()该文档,并将该附件作为base64编码的string添加到_attachments对象,我经常发现它更容易。

编辑:哎呀,没有看到你在Node.js。 查看这个代码 ,了解我们如何在PouchDBunit testing中创build缓冲区/ Blob的例子。