gpt4 book ai didi

javascript - 向 PouchDB 文档添加附加附件

转载 作者:行者123 更新时间:2023-12-01 03:54:40 24 4
gpt4 key购买 nike

我尝试在我的 Electron 应用程序中的 PouchDB 中向我的文档添加额外的附件。但是我只能添加最后一个附件,旧的附件会被覆盖。

以下数据未通过添加新文件的方式进行修改:

_attachments":{"someFile.jpg":{"content_type":"image/jpeg","revpos":5,"length":38718,"digest":"md5-X+MOUwdHmNeORSl6xdtZUg=="}

我应该首先阅读文档并使用以下方法使用多个附件添加其他文件来重新创建它:

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.
}
});

下面您可以看到我尝试运行以检查是否可以将两个附件添加到一个文档中的部分代码(实际上我尝试使用同一文件两次以简化测试):

pdb.putAttachment(id, name, rev, file, type).then(function (result) {
console.log("att saved:");
console.log(result);
}).catch(function (err) {
console.log(err);
});

var newFileName = "new" + name;
pdb.putAttachment(id, newFileName, rev, file, type).then(function (result) {
console.log("att saved 2:");
console.log(result);
}).catch(function (err) {
console.log(err);
});

结果是:

Object {ok: true, id: "1489351796004", rev: "28-a4c41eff6fbdde8a722a920c9d5a1390"}
id
:
"1489351796004"
ok
:
true
rev
:
"28-a4c41eff6fbdde8a722a920c9d5a1390"

CustomPouchError {status: 409, name: "conflict", message: "Document update conflict", error: true, id: "1489351796004"}
error
:
true
id
:
"1489351796004"
message
:
"Document update conflict"
name
:
"conflict"
status
:
409

看起来我不明白一些东西,或者我不知道如何正确使用 putAttachment。

我还会添加 sqlite 中数据的样子(按序列表,json 行):

{...,"_attachments":{"testPicture.jpg":{"content_type":"image/jpeg","revpos":34,"length":357677,"digest":"md5-Bjqd6RHsvlCsDkBKe0r7bg=="}}}

这里的问题是如何向结构添加另一个附件。不知怎的,我无法通过 putAttachment 实现这一目标

最佳答案

你的问题,尤其是代码很难阅读,所以错误不是那么容易发现:你没有等待 promise 得到解决。当您使用修订版 1 更新文档时,您必须等待结果,从那里读取修订版,然后才写入第二个附件。这将是我对您的代码的(未经测试的)看法:

pdb.putAttachment(id, name, rev, file, type)
.then(function (result) {
// Use the new revision here:
return putAttachment(id, newFileName, result.rev, file, type);
}).then(function (result) {
console.log(result);
}).catch(function (err) {
console.log(err);
});

如果您对两个附件进行了正确编码,则可以一次添加两个附件,但您需要自行处理。我建议您不要这样做 - 更好地使用 PouchDB 提供的抽象。

也不要过多分析底层数据结构,因为根据所使用的存储适配器,数据存储可能会有很大差异。不同的适配器如何存储数据,但永远不要依赖于您发现的任何内容,这非常有趣 - 数据格式可能会改变。

关于javascript - 向 PouchDB 文档添加附加附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42871831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com