Pourquoi normaliser les relations entre les docs
Normaliser la position des liens nous permet de :
Faciliter le travail des équipes, les liens s’écrivant toujours sous la même forme
Automatiser le fonctionnement de Cozy-Client avec un comportement par défaut
Permettre un support de la stack au niveau des API
Supporter des liens créés par d’autres app non gérées par Cozy
La normalisation n’est toutefois qu’une recommandation. Chacun est libre de l’utiliser ou non. Si la normalisation n’est pas utilisée, la gestion est alors entièrement manuelle.
Syntaxe utilisée
On utilise une syntaxe proche de ce que nous retourne la JSON API. Les liens sont regroupés par type dans un objet“relationships”. Chaque lien est décrit par le type de document lié et par l’identifiant du document lié.
Au niveau du stockage dans CouchDb / PouchDb
Les relations sont dans une sous-clef“relationships”, avec une syntaxe proche de la JSON API.
La sous-clef était auparavant préfixée par un $, afin d’isoler cette clef du reste des attributs du document quand tout est présenté à plat. Toutefois les opérateurs mango utilisent aussi ce préfixe, et l’utilisation de celui-ci dans le nom des propriétés nécessite d’échapper ce caractères dans les sélecteurs et les indexes. Décision a été prise de ne plus utiliser ce $ afin de simplifier cela.
Objectifs
Cas d’exemple
Références
Pourquoi normaliser les relations entre les docs
Syntaxe utilisée
Au niveau du stockage dans CouchDb / PouchDb
const book = {
_id: "B234",
title: "Guerre et Paix",