如何从CouchDB复制到PouchDB?

如何从CouchDB复制到PouchDB?,couchdb,pouchdb,Couchdb,Pouchdb,我已经建立了一个本地CouchDB数据库,我想在本地主机上运行的网页中使用JavaScript将其复制到一个PockDB数据库 使用下面的代码,我得到了这个错误: 来源http://localhost是访问控制允许原点不允许的 从远程删除http://后,我没有收到任何错误,但没有任何文档显示为已复制 从ChromeDevTools查看IndexedDB数据库,我可以看到数据库已经创建(但似乎没有文档) 运行在铬29.0.1535.2金丝雀 我是否可以在本地执行此操作,或者我是否需要设置远程Co

我已经建立了一个本地CouchDB数据库,我想在本地主机上运行的网页中使用JavaScript将其复制到一个PockDB数据库

使用下面的代码,我得到了这个错误:

来源<代码>http://localhost是访问控制允许原点不允许的

从远程删除
http://
后,我没有收到任何错误,但没有任何文档显示为已复制

从ChromeDevTools查看IndexedDB数据库,我可以看到数据库已经创建(但似乎没有文档)

运行在铬29.0.1535.2金丝雀

我是否可以在本地执行此操作,或者我是否需要设置远程CouchDB数据库并启用CORS(根据)


您可以在本地执行,但必须启用CORS

当您从远程URL中删除“http://”时,Pocket将把您的DB复制到一个名为“localhost”的新IndexedDB支持的PockDB中(或者实际上是“\u Pocket\u localhost”或类似的东西,它添加了一个前缀)


除非您是从CouchDB本身(在同一主机和端口上)提供此页面,否则您将需要启用CORS以使到CouchDB的复制正常工作。

我可以为本地主机上的CouchDB服务器启用CORS吗?尝试从Futon启用CORS(httpd>CORS为true,CORS>credentials为true和false),但仍然出现错误:
OPTIONShttp://127.0.0.1:5984/presentations/ 405(不允许使用方法)BackDB nightly.min.js:1选项http://127.0.0.1:5984/presentations/ 起源http://localhost 访问控制允许原点不允许。PockDB nightly.min.js:1 XMLHttpRequest无法加载http://127.0.0.1:5984/foo/. 起源http://localhost 访问控制允许原点不允许。localhost/node/foo/:1。。。对象{状态:0}
在本地主机上不应该有任何不同。可能在配置中设置
httpd>enable_cors=true
后尝试重新启动coach?谢谢@chesles——这是一个很好的建议,但尝试重新启动CouchDB(以及它运行的机器!),但仍然会出现交叉源错误:
XMLHttpRequest无法加载http://127.0.0.1:5984/foo/. 起源http://localhost 访问控制允许原点不允许。我已在重新启动时签入Futon:httpd>启用\u corstrue@SamDutton您在
cors>origins
config部分下有什么内容吗?如果是,请确保列表中包含
http://localhost
。您可能还想做一次健全性检查,确保您正在运行coach 1.3.x,因为1.2及更低版本没有内置CORS支持。宾果:添加
CORS>origins
成功了。谢谢你的坚韧!
var REMOTE = 'http://127.0.0.1:5984/foo';
var LOCAL = 'idb://foo';

Pouch(LOCAL, function(error, pouchdb){
  if (error) {
    console.log("Error: ", error);
  } else {
    var db = pouchdb;
    Pouch.replicate(REMOTE, LOCAL, function (error, changes) {
      if (error) {
        console.log('Error: ', error);
      }
      else {
        console.log('Changes: ', changes);
        db.allDocs({include_docs: true}, function(error, docs) {
          console.log('Rows: ', docs.rows);
        });
    }});
  }
});