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
,应该可以工作
但是:
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}},…]有同时放置多个附件的示例。