Pouchdb 在一个事务中将多个附件放在一个文档上

Pouchdb 在一个事务中将多个附件放在一个文档上,pouchdb,Pouchdb,我有一个像这样的函数 var Db = new PouchDB('mydb'); function attach(doc, pictures) { // expecting file URI var blobPromises = pictures.map(function(imgUri) { // https://github.com/nolanlawson/blob-util return blobUtil.imgSrcToBlob(imgUri); });

我有一个像这样的函数

var Db = new PouchDB('mydb');

function attach(doc, pictures) {
  // expecting file URI
  var blobPromises = pictures.map(function(imgUri) {
    // https://github.com/nolanlawson/blob-util
    return blobUtil.imgSrcToBlob(imgUri);
  });

  // angular's $q
  return $q.all(blobPromises).then(
    function gotBlobs(blobs) {
      var batchId = (new Date()).getTime();

      var attachPromises = blobs.map(function(blob, i) {
        var attachmentId = 'picture/' + batchId + '/' + i;

        // NOTE: this is throwing error 409
        return Db.putAttachment(doc._id, attachmentId, doc._rev, blob, blob.type);
      });

      return $q.all(attachPromises);
    }
  )
}
现在我知道出了什么问题-相同的
doc.\u rev
被重新用于所有附件插入。如果我将代码更改为依次执行
Db.putAttachment()
并每次查询新的
doc.\u rev
,应该可以工作

但是:

  • PockDB是否提供了类似于
    putAttachments()
    的API,比如什么
  • 在通过
    put()
    创建文档时,是否可以放置附件

  • 是的,您可以在
    put()
    it时将任意多个附件附加到文档中

    检查第一个示例。您可以这样做:

    db.put({
      _id: 'mydoc',
      _attachments: {
        'myattachment1.txt': {
          content_type: 'text/plain',
          data: blob1
        },
        'myattachment2.txt': {
          content_type: 'text/plain',
          data: blob2
        },
        'myattachment3.txt': {
          content_type: 'text/plain',
          data: blob3
        },
        // etc.
      }
    });
    

    是的,您可以在
    put()
    it时将任意多个附件附加到文档中

    检查第一个示例。您可以这样做:

    db.put({
      _id: 'mydoc',
      _attachments: {
        'myattachment1.txt': {
          content_type: 'text/plain',
          data: blob1
        },
        'myattachment2.txt': {
          content_type: 'text/plain',
          data: blob2
        },
        'myattachment3.txt': {
          content_type: 'text/plain',
          data: blob3
        },
        // etc.
      }
    });
    

    它起作用了。这个例子看起来只对base-64字符串有效,所以我忽略了它。谢谢,伙计。我想只要在这个答案中加入一个类似斑点的例子就可以了great@nlawson如何一次性放置一组附件?例如:[{'id1':{“content_type”:“image/png”,data:blob}},…]有同时放置多个附件的示例。它可以工作。这个例子看起来只对base-64字符串有效,所以我忽略了它。谢谢,伙计。我想只要在这个答案中加入一个类似斑点的例子就可以了great@nlawson如何一次性放置一组附件?例如:[{'id1':{“content_type”:“image/png”,data:blob}},…]有同时放置多个附件的示例。