2010-07-23 9 views
7

Czy istnieje sposób dodawania danych do couchdb, który działa w innej domenie i otrzymać odpowiedź, czy operacja przebiegła pomyślnie, czy nie? Wiem, że usługa couchdb obsługuje wywołanie zwrotne jsonp, ale czy mogę dodać dane za pomocą tego podejścia?Dodaj dane do couchdb z odpowiedzią jsonp

Odpowiedz

10

Nie, aktualnie nie można tego zrobić. Interfejs API REST CouchDB wymaga żądania POST lub PUT w celu wstawienia danych, ale JSONP obsługuje tylko żądania GET. Możesz więc pobrać dane z CouchDB w różnych domenach, ale aktualizacje/inserts/deletes nie będą działać.

8

Możesz użyć javascript po stronie klienta, aby utworzyć formularz do wykonania testu POST, skieruj dane wyjściowe do elementu iframe i użyj przesyłania wiadomości iframe z wieloma oknami, aby uzyskać wynik.

Oczywiście, ktoś zrobił już ładną bibliotekę javascript, aby to zrobić. Pobierz kod tutaj: https://github.com/benvinegar/couchdb-xd

Postępuj zgodnie z instrukcjami, aby wypchnąć go jako dodatkową bazę danych na swoim serwerze couchdb. Następnie na każdej stronie, to nie w domenie „your-tapczan-server”, można wykonać następujące czynności (po prostu spróbuj w konsoli JavaScript):

jQuery.getScript(
    "http://YOUR-COUCH-SERVER/couchdb-xd/_design/couchdb-xd/couchdb.js", 
    function() { 
     Couch.init(
      function() { 
       var s = new Couch.Server('http://YOUR-COUCH-SERVER/'); 
       var d = new Couch.Database(s,'YOURDB'); 
       d.put(
        "stackoverflow-test 1", 
        { foo: 111, bar: 222 }, 
        function(resp) { 
         console.log(resp);   
        } 
       ); 
      } 
     ) 
    } 
); 

Powyższe zakłada masz jQuery jest już załadowany na stronę. Jeśli nie, musisz go dodać, ale aktualnie współpracujesz z drugą stroną.

Biblioteka działa tylko w nowoczesnych przeglądarkach z obsługą window.postMessage(), choć niewielka poprawka może ostatecznie umożliwić starszym przeglądarkom korzystanie z niej poprzez komunikację src/hash.