2012-07-26 22 views
6

Ho bisogno di ottenere un documento, modificare/inserire/eliminare alcuni campi e rimetterlo.Aggiornamento di un documento CouchDB in nano

"put" l'azione richiede la revisione corrente del documento, ma in nano non riesco a trovare alcuna funzione che accetta una revisione come parametro e inserisce nuovamente il documento nel database.

Come posso fare questo con nano?

risposta

7

Nota: questo è l'algoritmo generale, non è specifico di alcuna libreria dal momento che il metodo nano's insert() non offre alcunché automatizzato per l'aggiornamento dei documenti.

Ottenere il documento, salvare la revisione corrente, applicare le modifiche e provare a inviare il documento con il numero di revisione salvato.

Assicurarsi di gestire le possibili risposte di conflitto 409 che si verificano quando un documento è stato alterato nel frattempo.

In tal caso, è necessario recuperare il documento, salvare il numero di revisione, riapplicare le modifiche e quindi provare a inviarlo di nuovo con la nuova revisione.

ecco l'algoritmo:

  1. documento Get
  2. Salvare il _rev
  3. Applica modifiche
  4. tenta di inviare il documento aggiornato con _rev salvato
  5. andare alla fase 1 in caso di a 409

Acquista il CouchDB HTTP Document API's PUT section e CouchDB nella pagina wiki Replication and Conflicts per maggiori informazioni al riguardo. Potresti anche trovare utile How To Update A Document With Nano (The CouchDB Client for Node.js).

+0

So che ho bisogno di revisione. La domanda è qual è la funzione con argomento "revisione" in nano. Risposta giusta ma su un'altra domanda. – DSblizzard

+1

È la risposta giusta anche per la tua domanda. Basta leggere la documentazione [nano's Document API] (https://github.com/dscape/nano#document-functions). Esiste solo un metodo 'insert()' che significa che devi impostare la revisione corretta sul documento che vuoi inserire. –

+0

Puoi mostrare il codice, per favore? – DSblizzard

Problemi correlati