2011-03-23 4 views
4

Je suis conscient que CouchDB identifie les documents qui sont en conflit après la réplication. Est-ce que CouchDB gère la détection des conflits différemment pour les documents _design que pour les documents ordinaires? Par exemple, je modifie un document _design dans DB1. Je modifie ensuite le même document _design dans DB2. Je réplique ensuite DB1 à DB2. Je m'attendrais à ce que CouchDB identifie un conflit, mais après la réplication, Couch ne renvoie aucun conflit.CouchDB _design détection de conflit de documents

Répondre

3

Les documents de conception sont exactement comme les documents normaux, d'où le nom "documents de conception" au lieu de "programmes de canapé" ou autres.

Si vous apportez des modifications identiques à des documents identiques dans différentes bases de données, vous aurez aucun conflit. Running couchapp push pourrait créer cette situation, si vous poussez la même application à deux bases de données différentes (et ils avaient le même _rev pour commencer).

Sinon, vous obtiendrez un conflit, que ce soit un document de conception ou non. Bien sûr, canapé va "promouvoir" une révision comme la version canonique, mais si vous vérifiez _conflicts dans une vue, vous les verrez. (Pour voir les documents de conception en vue, vous devez également activer l'option include_design.)

{ "_id": "_design/example" 
, "views": 
    { "conflicts": 
    { "options": {"include_design": true} 
    , "map": "function(doc) { if(doc._conflicts) emit(doc._id, doc._conflicts); }" 
    } 
    } 
} 

Trouver ddocs en conflit en utilisant une analyse de tessiture:

?startkey="_design/"&endkey="_design0" 
+0

Nous avons une vue de _conflicts pour tous nos non_design documents. Cependant, les documents _design ne fonctionnent pas avec les vues. Toute suggestion sur la façon d'obtenir une liste de tous les documents _design en conflit après une réplication réussie serait grandement appréciée. Merci. – JimZ

+0

J'ai mis à jour la réponse. Les documents de conception * fonctionnent * avec les vues, mais c'est un paramètre optionnel, et la valeur par défaut est 'false'. Une fois que vous l'activez, vous verrez des conflits ddoc. (Vous pouvez également mettre ceci dans une vue totalement séparée, à vous.) – JasonSmith

+0

Je devais mettre des options à côté des vues, pas dans une vue, il a ensuite effectué toutes les vues. J'utilise la version 1.2.0 et je n'ai rien vu dans les journaux de changements pour suggérer que l'on peut mettre des options dans des vues individuelles. –

Questions connexes