2014-07-17 4 views
0

Disons que j'ai un document dans CouchDB et que deux utilisateurs accèdent à ce document pour le modifier en même temps.Gérez les documents de mise à jour en même temps dans CouchDB?

Comment puis-je gérer cela parce que si le document est mis à jour le numéro de _rev sera changé et l'autre utilisateur n'a pas pu enregistrer ses modifications ..

Comment fusionner les utilisateurs des mises à jour effectuées sur les mêmes documents?

Répondre

0

Vous résolvez cette côté client envoyant à nouveau la mise à jour avec _rev ou (mieux) écrivez le update handler function. Le gestionnaire de mise à jour prend comme argument l'actuel document (à jour) et les paramètres fournis par l'utilisateur qui exécute la mise à jour. Comme la fonction de résultat devrait retourner le nouveau document ou null. Vous pouvez le considérer comme une mise à jour côté serveur en place. De cette façon, vous n'avez pas à vous soucier du champ _ver.

+0

Je ne comprends pas comment fonctionne cette fonction de gestionnaire de mise à jour. Pouvez-vous expliquer dans les détails? –

+0

Le gestionnaire de mise à jour est une fonction du document de conception (identique à la fonction de carte). Lorsque vous allez à l'URL '/ DB_NAME/_design/DESIGN_NAME/_update/FUN_NAME/DOC_ID', il est exécuté. Couch transmet le document en cours et demande des données (y compris des paramètres supplémentaires dans l'URL et le corps) en tant qu'arguments de la fonction. La valeur de retour est la paire: nouveau document et la réponse à l'utilisateur qui a exécuté l'URL. Jetez un oeil à la [documentation] (http://docs.couchdb.org/en/latest/couchapp/ddocs.html#update-functions) et aux exemples dans [wiki] (http://wiki.apache.org/couchdb/Document_Update_Handlers). –

+0

où devrait être écrit cette fonction? –

Questions connexes