2013-03-04 8 views
0

Nous sommes nouveaux dans la base de données Couch DB et nous ne savons pas comment utiliser le numéro de révision du document. En particulier, nous ne sommes pas sûrs si l'application cliente doit être au courant de ce numéro de révision, et si elle devrait le renvoyer au serveur avec chaque demande de sauvegarde pour assurer la continuité. Notre situation est que nous avons un serveur NodeJS entre CouchDB et une application client (un jeu écrit en Actionscript 3). Le monde du jeu est divisé en une grille, et il peut y avoir plusieurs changements à une seule tuile dans un court laps de temps, chacun produisant une nouvelle demande de sauvegarde. Comme il n'y a aucune garantie que deux requêtes simultanées arriveront au serveur dans un ordre particulier, nous devons nous assurer que les données de la mosaïque ne seront sauvegardées que si elles sont plus récentes que les données qui sont déjà dans la base de données.CouchDB - Comment utiliser correctement le numéro de révision du document?

Nous envisageons d'utiliser un identifiant de transaction personnalisé que nous attachons à chaque document, mais nous craignons que nous ne le fassions pas correctement ou que nous manquions un comportement fondamental de CouchDB (c.-à-d. Le "Right Way")

Répondre

5

Oui, incluez la propriété _rev à chaque sauvegarde. De http://wiki.apache.org/couchdb/HTTP_Document_API#PUT

Pour mettre à jour un document existant, vous émettez également une demande PUT. Dans ce cas, le corps JSON doit contenir une propriété _rev, qui permet à CouchDB de savoir sur quelle révision les modifications sont basées. Si la révision du document actuellement stockée dans la base de données ne correspond pas, une erreur de conflit 409 est renvoyée.

Pour plus d'informations sur la gestion des conflits, voir: http://guide.couchdb.org/editions/1/en/conflicts.html#working

Questions connexes