Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向数据库文档添加附加附件_Javascript_Electron_Attachment_Pouchdb - Fatal编程技术网

Javascript 向数据库文档添加附加附件

Javascript 向数据库文档添加附加附件,javascript,electron,attachment,pouchdb,Javascript,Electron,Attachment,Pouchdb,我试图在我的电子应用程序中的PockDB中为我的文档添加附加附件。但是,我只能添加最后一个附件,旧的附件被覆盖 以下数据未以添加新文件的方式进行修改: _attachments":{"someFile.jpg":{"content_type":"image/jpeg","revpos":5,"length":38718,"digest":"md5-X+MOUwdHmNeORSl6xdtZUg=="} 我是否应该先阅读文档,然后使用以下方法通过使用多个附件添加其他文件来重新创建文档: db.pu

我试图在我的电子应用程序中的PockDB中为我的文档添加附加附件。但是,我只能添加最后一个附件,旧的附件被覆盖

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

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

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

结果是:

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
看起来我不懂什么,或者我不知道如何正确使用附件

我还要添加sqlite中数据的外观(按序列表,json行):


这里的问题是如何向结构添加另一个附件。不知何故,我无法通过将附件替换为文档来实现这一点。如果要在不覆盖现有文档内容的情况下向其添加附件,则应使用。

替换该文档。如果您想在不覆盖现有文档内容的情况下向其添加附件,则应使用。

您的问题,尤其是代码很难阅读,因此错误并不容易发现:您没有等待承诺得到解决。当您使用修订版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);
});
如果编码正确,一次添加两个附件是可能的,但这取决于您自己。我建议您不要这样做——最好使用PockDB提供的抽象


另外,不要过多地分析底层数据结构,因为根据所使用的存储适配器,数据存储可能会有很大的不同。很有趣的是,不同的适配器如何存储它们的数据,但从不依赖您发现的任何东西–数据格式可能会发生变化。

您的问题,尤其是代码很难阅读,因此错误并不容易发现:您没有等待承诺得到解决。当您使用修订版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);
});
如果编码正确,一次添加两个附件是可能的,但这取决于您自己。我建议您不要这样做——最好使用PockDB提供的抽象


另外,不要过多地分析底层数据结构,因为根据所使用的存储适配器,数据存储可能会有很大的不同。非常有趣的是,不同的适配器如何存储它们的数据,但永远不要依赖于您发现的任何东西–数据格式可能会改变。

谢谢您的回复。坦率地说,主要问题似乎与在一行中添加两个附件有关。请看编辑后添加代码的问题,谢谢回复。坦率地说,主要问题似乎与在一行中添加两个附件有关。你能看一下添加了代码的已编辑问题吗?它正在工作。非常感谢。对于我来说,下一步是修改您所介绍的内容,以便在我无法预测将要添加的文件数量时采用这种情况(上面的代码只添加了两个附件)。Broad context基于Electron中的web表单,该表单在保存以前添加的附件的同时逐个添加附件。如果您有一个附件数组,您可以通过它来减少。这是一种更高级的承诺。您可以在中找到一些信息,请参见段落中的第3个示例。如果你需要更多的帮助,请告诉我!您还可以使用更易于阅读。我不确定它是否在electron中得到支持,但您也可以使用将其传输到ES5代码。它正在工作。非常感谢。对于我来说,下一步是修改您所介绍的内容,以便在我无法预测将要添加的文件数量时采用这种情况(上面的代码只添加了两个附件)。Broad context基于Electron中的web表单,该表单在保存以前添加的附件的同时逐个添加附件。如果您有一个附件数组,您可以通过它来减少。这是一种更高级的承诺。您可以在中找到一些信息,请参见段落中的第3个示例。如果你需要更多的帮助,请告诉我!您还可以使用更易于阅读。我不确定它是否在electron中受支持,但您也可以使用将其传输到ES5代码。
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);
});