2010-07-23 12 views

risposta

10

No, al momento non è possibile farlo. L'API REST di CouchDB richiede una richiesta POST o PUT per inserire dati, ma JSONP supporta solo richieste GET. Quindi puoi recuperare i dati da CouchDB attraverso i domini, ma gli aggiornamenti/inserimenti/eliminazioni non funzioneranno.

8

È possibile utilizzare il javascript sul lato client per creare un modulo per eseguire il POST, indirizzare l'output su un iframe e utilizzare la messaggistica iframe cross-window per ottenere il risultato.

Ovviamente, qualcuno ha già creato una bella libreria JavaScript per farlo. Ottenere il codice qui: https://github.com/benvinegar/couchdb-xd

Seguire le istruzioni per spingerlo come un database aggiuntivo sul server couchdb. Poi, su qualsiasi sito, includere uno non nel dominio 'tuo-divano-server', è possibile effettuare le seguenti operazioni (basta provare nella console 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);   
        } 
       ); 
      } 
     ) 
    } 
); 

È possibile che presume di avere jQuery è già caricato sulla pagina. In caso contrario, dovrai aggiungerlo, tuttavia stai interagendo attualmente con l'altra pagina.

La libreria funziona solo su browser moderni con il supporto di window.postMessage(), sebbene una piccola patch possa consentire ai browser più vecchi di utilizzarla tramite la comunicazione src/hash.