2013-06-11 31 views
7

Yerel bir CouchDB veritabanı kurdum ve localhost üzerinde çalışan bir web sayfasında JavaScript'i kullanarak PouchDB veritabanına kopyalamak istiyorum. I aşağıda kod ile CouchDB'den PouchDB'ye nasıl kopyalanır?

bu hatayı alıyorum:

UZAKTAN kaldırıldı http:// ile

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

, bir hata alamadım ama çoğaltılmış olarak hiçbir dokümanlar gösterilir.

Krom DevTools'un gelen IndexedDB veritabanları bakınca veritabanı oluşturuldu (ama belgeleri görünmüyor) görebilirsiniz.

Krom 29.0.1535.2 kanaryada çalışıyor.

Bunu yerel olarak yapabilir miyim, yoksa uzak bir CouchDB veritabanı kurup CORS'i etkinleştirmem gerekir mi (CouchDB docs uyarınca)?

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

cevap

10

Yerel olarak yapabilirsiniz, ancak CORS etkinleştirilmelidir. Uzak URL'den "http: //" öğesini kaldırdığınızda, Kese, DB'nizi "localhost" (veya aslında "_pouch_localhost" adlı yeni bir IndexedDB destekli Pouchdb'ye veya bu gibi bir şeye çoğaltacaktır. önek).

Bu sayfayı CouchDB'nin kendisinden (aynı ana bilgisayarda & bağlantı noktasında) hizmet vermediğiniz sürece, CouchDB'nin çalışmasına çoğaltılması için CORS'i etkinleştirmeniz gerekir.

+0

Localhost'ta CouchDB sunucusu için CORS'yi etkinleştirebilir miyim? Fuers'tan CORS'i (httpd> cors'dan true'ye ve cors> kimlik bilgilerini hem doğru hem de yanlış) etkinleştirmeye çalıştı ancak yine de hatalar alıyor: 'OPTIONS http://127.0.0.1:5984/presentations/ 405 (Yöntem İzin Verilmiyor) pouchdb-nightly. min.js: 1 SEÇENEKLER http://127.0.0.1:5984/presentations/ Kaynak http: // localhost'a Erişim-Denetim-İzin-Kökeni tarafından izin verilmiyor. pouchdb-nightly.min.js: 1 XMLHttpRequest, http://127.0.0.1:5984/foo/ yükleyemiyor. Origin http: // localhost'a Erişim-Kontrol-İzin-Menşei tarafından izin verilmiyor. localhost/node/foo /: 1 ... Object {durum: 0} ' –

+0

Bu localhost'ta farklı olmamalı. Belki de yapılandırmada 'httpd> enable_cors = true' ayarlandıktan sonra Couch'u yeniden başlatmayı deneyin. – chesles

+0

Teşekkürler @chesles - iyi bir öneri, ama CouchDB (ve üzerinde çalıştığı makine!) Yeniden başlatmayı denedi ama yine de çapraz kaynaklı hata olsun: 'XMLHttpRequest http://127.0.0.1:5984/foo/ yükleyemiyor. Kökeni http: // localhost Erişim-Kontrol-İzin-Menşe tarafından izin verilmiyor.' Yeniden başlatıldığında Futon'da kontrol ettik: httpd> enable_cors true –

İlgili konular