2013-06-11 16 views
7

Skonfigurowałem lokalną bazę danych CouchDB i chciałbym ją powielić do bazy danych PouchDB, używając JavaScript na stronie internetowej uruchomionej na localhost.Jak skopiować z CouchDB do PouchDB?

Z poniższy kod otrzymuję ten błąd:

Origin http://localhost is not allowed by Access-Control-Allow-Origin.

Z http:// usunąć z odległych, nie pojawia się błąd, ale nie docs są pokazane jako replikowane.

Przeglądając bazy danych IndexedDB z Chrome DevTools, widzę, że baza danych została utworzona (ale nie ma dokumentów).

Działa w Chrome kanale 29.0.1535.2.

Czy mogę to zrobić lokalnie, czy muszę skonfigurować zdalną bazę danych CouchDB i włączyć CORS (zgodnie z CouchDB docs)?

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

Odpowiedz

10

Możesz zrobić to lokalnie, ale CORS musi być włączony.

Po usunięciu "http: //" ze zdalnego adresu URL, Pouch ma zamiar skopiować DB w nowy plik Pouchdb z obsługą IndexedDB o nazwie "localhost" (lub faktycznie "_pouch_localhost" lub coś podobnego - dodaje prefiks).

Jeśli nie obsługujesz tej strony z samego CouchDB (na tym samym porcie hosta &), musisz włączyć CORS, aby uzyskać replikację do pracy CouchDB.

+0

Czy mogę włączyć CORS dla serwera CouchDB na localhost? Próbowałem umożliwiając CORS z Futon (httpd> cors na true i cors> credentials true i false), ale wciąż dostaję błędy: 'OPCJE http://127.0.0.1:5984/presentations/ 405 (Metoda niedozwolona) pouchdb-nightly. min.js: 1 OPCJE http://127.0.0.1:5984/presentations/ Początek http: // localhost jest niedozwolony przez Access-Control-Allow-Origin. pouchdb-nightly.min.js: 1 XMLHttpRequest nie może załadować http://127.0.0.1:5984/foo/. Początek http: // localhost jest niedozwolony przez Access-Control-Allow-Origin. localhost/node/foo /: 1 ... Object {status: 0} ' –

+0

Na localhost nie powinno być inaczej. Może spróbuj ponownie uruchomić Couch po ustawieniu 'httpd> enable_cors = true' w config? – chesles

+0

Dzięki @chesles - dobra sugestia, ale próbowałem ponownie uruchomić CouchDB (i maszynę, na której działa!), Ale nadal pojawia się błąd pochodzenia krzyżowego: 'XMLHttpRequest nie może załadować http://127.0.0.1:5984/foo/. Początek http: // localhost jest niedozwolony przez Access-Control-Allow-Origin. "Sprawdziłem Futon przy restarcie: httpd> enable_cors jest prawdziwe –