Convertir JSON en schéma Mongoose — Numio
Déduit une définition de schéma Mongoose à partir d’un document JSON d’exemple et la renvoie en JSON. Les champs reçoivent String, Number, Boolean, Date, ObjectId ou Mixed ; les objets imbriqués deviennent des chemins imbriqués et les tableaux d’objets des schémas de sous-documents.
Écrire le schéma d’une collection MongoDB existante à partir d’un document copié depuis Compass ou mongosh.
JSON
Mongoose Schema
Quand l’utiliser
- Écrire le schéma d’une collection MongoDB existante à partir d’un document copié depuis Compass ou mongosh.
- Démarrer un modèle Node.js à partir d’un payload d’API d’exemple que vous comptez stocker.
Mode d’emploi
- Collez un document en JSON strict, ou un tableau de documents ; écrivez les ObjectId et les dates comme des chaînes simples plutôt qu’avec ObjectId() ou ISODate().
- Vérifiez les types déduits : les chaînes hexadécimales de 24 caractères deviennent ObjectId et les chaînes ISO 8601 comme 2024-05-01T08:00:00Z deviennent Date.
- Copiez le résultat dans new mongoose.Schema({...}) et ajoutez vous-même les options required, default, index et ref.
Document JSON
{
"_id": "64f1c2a9e1b2c3d4e5f60718",
"name": "Ada Lovelace",
"code": "A-1001",
"joinedAt": "2024-05-01T08:00:00Z",
"roles": ["admin", "editor"],
"addresses": [
{ "city": "London", "zip": "NW1" },
{ "city": "Paris", "zip": "75001", "primary": true }
],
"profile": { "bio": "Mathematician", "website": null }
}Schéma Mongoose (JSON)
{
"_id": {
"type": "ObjectId"
},
"name": {
"type": "String"
},
"code": {
"type": "String"
},
"joinedAt": {
"type": "Date"
},
"roles": {
"type": [
"String"
]
},
"addresses": {
"type": [
{
"city": {
"type": "String"
},
…Détails et limites
Déduit dans le navigateur par le générateur propre au site ; le document n’est pas envoyé à un serveur.
Seules les dates ISO 8601 (2024-05-01, éventuellement avec une heure et un décalage) sont typées Date : des codes comme "A-1001" ou "12" restent donc String.
Les tableaux d’objets deviennent un schéma de sous-document construit à partir de tous les éléments, comme "type": [{ "city": ... }]. Les tableaux vides deviennent Array et null devient Mixed.
Les champs obligatoires, valeurs par défaut, index et refs ne peuvent pas être déduits des données, et les champs absents de votre échantillon manquent dans le schéma.
FAQ
Puis-je convertir un tableau JSON de documents ?
Oui. Les documents sont fusionnés : chaque champ présent dans l’un d’eux figure dans le schéma. Un champ de type différent selon les documents devient Mixed.
Pourquoi les types sont-ils entre guillemets, comme "String" ?
La sortie est du JSON, les noms de type sont donc des chaînes. En JavaScript, vous pouvez utiliser les constructeurs globaux String, Number, Boolean et Date ainsi que Schema.Types.ObjectId et Schema.Types.Mixed.
Comment _id est-il traité ?
Comme n’importe quel autre champ : une chaîne hexadécimale de 24 caractères est typée ObjectId. Supprimez _id si vous voulez que Mongoose l’ajoute automatiquement.