1

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

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

将二进制对象附加到文档。PouchDB 的大多数 API 都处理 JSON,但如果您正在处理大型二进制数据(例如 PNG),如果您只是将它们包含为 base64 或十六进制编码的字符串,则可能会导致性能或存储损失。在这些情况下,您可以将二进制数据存储为附件。有关详细信息,请参阅有关附件的 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');

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

谢谢!

4

1 回答 1

1

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

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

编辑:哎呀,没有看到你在 Node.js 上。查看此代码,了解我们如何在 PouchDB 单元测试中制作 Buffers/Blobs 的示例。

于 2014-05-06T18:35:30.730 回答