Les modèles de données

L’application Sokkin utilise un système de modélisation des modèles de données. Ce système à pour objectif de combler les lacunes que propose le service Firebase. (voir Firebase, base de donnée en temps réel)

L’objectif est multiple:

  • Valider des objets JSON facilement.
  • Décrire les objets utilisés.
  • Offrir des messages d’erreur à l’interface utilisateur.

Pour ce faire, nous utilisons AJV (Another Json Validator)

Note

Lien de AJV: https://ajv.js.org/

Voici un example de modèle pour un Utilisateur

Utilisateur ={
   "type":"object",
   "required":[
      "email",
      "prenom"
   ],
   "properties":{
      "email":{
         "type":"string",
         "format":"email"
      },
      "prenom":{
         "type":"string"
      },
      "enfants":{
         "type":"array",
         "uniqueItems":true,
         "items":{
            "type":"string"
         }
      }
   }
}
type

type permet de définir le type ( ou plusieurs types) pour une propriété. Les types de base sont les suivants: number, integer, string, boolean, array, object ou null

Warning

Les autres mots clef s’appliquent souvent par rapport à un type. Si la donnée est de type différent, le mot clef ne sera pas appliqué et la donnée sera considérée valide.

properties

Le mot clef properties est un objet de type clef-valeur. Chaque valeur doit être un schema JSON valide.

L’objet Utilisateur devra, pour être valide, contenir toutes les propriétés citées. (un prenom et un email dans notre cas)

required

Le mot clef required contient une liste de chaînes de charactères sans doublons.

L’objet Utilisateur devra, pour être valide, contenir toutes les propriétés citées. (un prenom et un email dans notre cas)

format

Le format permet une granulosité accrue en enrichissant le type.

Les formats accéptés sont les suivants: date, date-time, uri, email, hostname, ipv4, ipv6 ou regex.

Error

Pour des raisons de sécurité, l’usage du format regex est déconseillé du à l’utilisation de la méthode ‘eval’.