2010-07-23 10 views

Respuesta

10

No, actualmente no puede hacer esto. La API REST de CouchDB requiere una solicitud POST o PUT para insertar datos, pero JSONP solo admite solicitudes GET. Por lo tanto, puede recuperar datos de desde CouchDB en todos los dominios, pero las actualizaciones/inserciones/borrados no funcionarán.

8

Puede usar el javascript del lado del cliente para crear un formulario para hacer el POST, dirigir el resultado a un iframe y usar el iframe de ventana cruzada para obtener el resultado.

Por supuesto, alguien ya ha creado una buena biblioteca de JavaScript para hacer esto. Obtener el código aquí: https://github.com/benvinegar/couchdb-xd

Siga las instrucciones a presentarlo como una base de datos adicional en su servidor couchdb. Entonces, en cualquier sitio, incluir uno no en el dominio 'tu-sofá-servidor, puede hacer lo siguiente (a modo de prueba en la consola de 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);   
        } 
       ); 
      } 
     ) 
    } 
); 

Lo anterior presupone que tiene jQuery ya está cargado en la página. De lo contrario, deberá agregarlo, sin embargo, actualmente está interactuando con la otra página.

La biblioteca solo funciona en navegadores modernos con el soporte de window.postMessage(), aunque un pequeño parche puede permitir que los navegadores antiguos lo usen a través de la comunicación src/hash.

Cuestiones relacionadas