将Chrome本地IndexedDBPouchDB复制到CouchDB问题

问题描述

我使用pouchdb(v 6.2.0)在Chrome中创建了一个localDB。它是在IndexedDB中创建的。

var localdb = new PouchDB('localDB');

然后我在Ubuntu 18.04中创建了一个新的Sofadb(v3.1.0)。而且,我建立了一个没有用户权限的公共数据库。而且,ouchdb更改了设置以启用跨域资源共享(CORS)。它与本地连接中的curl操作一起很好地工作。

我使用pouchdb在chrome中创建新的远程数据库。但是远程数据库的复制失败,并显示“消息:“ getCheckpoint被拒绝”。

var remotedb = new PouchDB('http://admin:password@127.0.0.1:5984/remoteDB');

localdb.replicate.to(remotedb).on('complete',function () {
   console.log('Done');
}).on('error',function (err) {
   console.log('Error',err);
});

remotedb.info()失败,并显示名称:“未知””消息。

try {
  ret = await remotedb.info();
} catch (err) {
  console.log('error',err);
}

我猜测chrome中的pouchdb的remoteDB有问题。 但是,我不确定确切原因是什么。

解决方法

我找到了上述问题的答案。这是一个简单的新手错误。答案是CORS和HTTPS问题。以下是一种解决方法。

Chrome的CORS通过关闭网络安全解决了该问题。

chrome --disable-web-security --user-data-dir

https://medium.com/@baphemot/understanding-cors-18ad6b478e2b

HTTPS是自签名证书,这是Chrome拒绝的问题。

https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=48203146

寻找两个答案,数据库复制工作正常。