7

我已经建立了一个本地 CouchDB 数据库,我想将它复制到一个 PouchDB 数据库,在 localhost 上运行的网页中使用 JavaScript。

使用下面的代码,我收到此错误:

Access-Control-Allow- Originhttp://localhost不允许 Origin。

http://REMOTE 中删除后,我没有收到错误消息,但没有文档显示为已复制。

查看 Chrome DevTools 中的 IndexedDB 数据库,我可以看到该数据库已创建(但似乎没有文档)。

在 Chrome 29.0.1535.2 金丝雀中运行。

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

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

1 回答 1

10

您可以在本地执行此操作,但必须启用 CORS。

当您从远程 URL 中删除“http://”时,Pouch 会将您的数据库复制到名为“localhost”(或实际上是“_pouch_localhost”或类似名称的新 IndexedDB 支持的 Pouchdb 中 - 它添加了一个前缀)。

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

于 2013-06-12T15:47:48.337 回答