1

PouchDB を統合する AngularJS アプリがあります。PouchDB にドキュメントを追加したいのですが、ドキュメント (以下) からはあまり明確ではありません:

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

バイナリ オブジェクトをドキュメントに添付します。PouchDB の API のほとんどは JSON を処理しますが、大規模なバイナリ データ (PNG など) を処理している場合、単純に base64 または 16 進数でエンコードされた文字列として含めると、パフォーマンスまたはストレージのペナルティが発生する可能性があります。このような場合、バイナリ データを添付ファイルとして保存できます。詳細については、添付ファイルに関する CouchDB のドキュメントを参照してください。

使用例:

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

ノード内では、Blob の代わりに Buffer を使用する必要があります。

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

私のアプリでは、次のようになりました。

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

では、バッファを使用してファイルを DB に追加するにはどうすればよいですか? さらに、有効な docID、attachementID、および rev を自動的に生成することは可能ですか? また、MS Office ドキュメントのタイプは何でしょうか?

ありがとう!

4

1 に答える 1

1

ブロブは、間違いなく操作が混乱する可能性があります。PouchDB 用に、Blob shim ライブラリを作成しました。これを使用してください。README には、開始するためのいくつかの例も含まれています。基本的に、コンテンツ タイプとともに BLOB データを渡すだけで済みます。

別の方法として、いつでもupdate()ドキュメントだけを添付して、添付ファイルを base64 でエンコードされた文字列として_attachmentsオブジェクトに追加することができます。

編集:おっと、あなたが Node.js にいることを知りませんでした。PouchDB 単体テストでバッファー/ブロブを作成する方法の例については、このコードを確認してください。

于 2014-05-06T18:35:30.730 に答える