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
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ć.
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.