2017-08-18 3 views
1

En tant que débutant CouchDB, j'ai de la difficulté à comprendre comment mettre à jour des documents.Pourquoi y a-t-il deux façons de mettre à jour les documents?

Quand je lis les documents que je trouve ce qui est assez déroutant pour moi:

1) Mise à jour d'un document existant

Pour mettre à jour un document existant, vous devez spécifier le numéro de révision en cours au sein de le paramètre _rev.

Source: Chapter 10.4.1 /db/doc

2) Fonctions de mise à jour

gestionnaires de mise à jour sont des fonctions que les clients peuvent demander d'invoquer la logique côté serveur qui va créer ou mettre à jour un document.

Source: Chapter 6.1.4 Design Documents

Pourriez-vous s'il vous plaît me dire de quelle manière préférez-vous mettre à jour vos documents?


Edit 1:

Disons que la structure de données est un simple document de car avec quelques champs de base.

{ 
    "_id": "123", 
    "name": "911", 
    "brand": "Porsche", 
    "maxHP": "100", 
    "owner": "Lorna" 
} 

Maintenant, les changements owner, seriez-vous toujours utiliser l'option 1? L'option 1 a tout un inconvénient, car je ne peux pas éditer un seul champ. Je dois d'abord récupérer tous les champs, éditer seulement le champ owner et renvoyer le document entier. Je l'ai juste essayé et je trouve cela assez long. Hmmm ...

Répondre

2

La plupart du temps, vous voulez choisir l'option 1 "Mettre à jour un document existant"; Cela fonctionne sur un document standard qui stocke des données dans la base de données. L'autre option concerne les documents de conception, tels que les vues (qui sont également des documents, ce qui est définitivement déroutant pour les nouveaux utilisateurs de CouchDB), ce qui est complètement différent. Stick avec l'option 1, et bonne chance :)

+0

Bonne explication, merci pour cela. Puis-je vous demander si vous choisissez l'option 2 lorsque vous souhaitez effectuer des mises à jour partielles sur des documents? J'ai cherché cela et seulement trouvé des réponses qui se rapportent à l'aide de la fonction de gestionnaire de mise à jour. [Answer: 23208549] (https://stackoverflow.com/a/23208549/8314623) & [Answer: 41485731] (https://stackoverflow.com/a/41485731/8314623) par exemple. – Magiranu

+1

Vous pouvez certainement adopter cette approche pour les mises à jour partielles, mais je serais intéressé de voir la structure de données qui l'exige. Je suis fermement dans le camp «plus petits documents sont moins susceptibles de provoquer des conflits» bien que la conception de données soit, bien sûr, une question de goût. –

+0

Lorna, je me suis permis de modifier ma question originale et ajouté un exemple simple en ce qui concerne votre commentaire. J'apprécierais si vous pouviez me dire quelle option vous choisiriez! Merci beaucoup! – Magiranu