Appearance
Concept de Schéma avec Mongoose
Concept: Un schéma dans Mongoose est comme un plan ou une structure pour chaque document dans une collection MongoDB. Il définit la forme et le type de données que chaque document peut contenir. En d'autres termes, il agit comme un modèle pour les données, spécifiant quels champs sont disponibles et quel type de données ils peuvent contenir.
Exemple de la vie quotidienne: Imaginez un formulaire d'inscription pour un événement. Ce formulaire détermine les informations que vous devez fournir, comme votre nom, âge, et adresse email. De la même manière, un schéma Mongoose dicte la structure des données dans un document MongoDB.
Exemple concret de code:
javascript
import mongoose from 'mongoose';
const { Schema } = mongoose;
// Création d'un schéma pour les utilisateurs
const userSchema = new Schema({
name: { type: String, required: true },
age: Number,
email: { type: String, required: true, unique: true }
});
// Création d'un modèle basé sur le schéma
const User = mongoose.model('User', userSchema);
// Utilisation du modèle pour créer un nouvel utilisateur
const newUser = new User({ name: 'Alice', age: 25, email: 'alice@example.com' });
newUser.save().then(doc => console.log(doc));
import mongoose from 'mongoose';
const { Schema } = mongoose;
// Création d'un schéma pour les utilisateurs
const userSchema = new Schema({
name: { type: String, required: true },
age: Number,
email: { type: String, required: true, unique: true }
});
// Création d'un modèle basé sur le schéma
const User = mongoose.model('User', userSchema);
// Utilisation du modèle pour créer un nouvel utilisateur
const newUser = new User({ name: 'Alice', age: 25, email: 'alice@example.com' });
newUser.save().then(doc => console.log(doc));
Diverses Méthodes de Création de Schémas
Définition Basique:
- Utilisez le constructeur
Schema
pour définir un schéma simple. - Exemple:javascript
import mongoose from 'mongoose'; const { Schema } = mongoose; const userSchema = new Schema({ name: String, age: Number, email: String });
import mongoose from 'mongoose'; const { Schema } = mongoose; const userSchema = new Schema({ name: String, age: Number, email: String });
- Utilisez le constructeur
Avec des Types Détaillés:
- Définissez des types plus complexes avec des validations et des valeurs par défaut.
- Exemple:javascript
const userSchema = new Schema({ name: { type: String, required: true }, age: { type: Number, default: 0 }, email: { type: String, unique: true } });
const userSchema = new Schema({ name: { type: String, required: true }, age: { type: Number, default: 0 }, email: { type: String, unique: true } });
Utilisation de Sous-documents:
- Créez des sous-documents pour structurer des parties complexes du schéma.
- Exemple:javascript
const addressSchema = new Schema({ street: String, city: String }); const userSchema = new Schema({ name: String, address: addressSchema });
const addressSchema = new Schema({ street: String, city: String }); const userSchema = new Schema({ name: String, address: addressSchema });
Définition avec des Méthodes:
- Ajoutez des méthodes personnalisées au schéma.
- Exemple:javascript
userSchema.methods.fullName = function() { return `${this.firstName} ${this.lastName}`; };
userSchema.methods.fullName = function() { return `${this.firstName} ${this.lastName}`; };
Utilisation de Middleware (Hooks):
- Définissez des actions à exécuter avant ou après certaines opérations (comme sauvegarder).
- Exemple:javascript
userSchema.pre('save', function(next) { // Effectuer une action avant de sauvegarder next(); });
userSchema.pre('save', function(next) { // Effectuer une action avant de sauvegarder next(); });
Indices et Optimisations:
- Ajoutez des indices pour améliorer la performance des requêtes.
- Exemple:javascript
userSchema.index({ email: 1 });
userSchema.index({ email: 1 });
Astuces et Bonnes Pratiques
Utilisez des Types et des Validations Adéquats
Assurez-vous que chaque champ de votre schéma est correctement typé et validé pour garantir la qualité des données.
Exploitez les Sous-documents pour des Structures Complexes
Utilisez des sous-documents pour structurer de manière ordonnée des données complexes et imbriquées.
Ajoutez des Méthodes Personnalisées pour une Plus Grande Flexibilité
Les méthodes personnalisées peuvent rendre vos modèles plus puissants et flexibles.
Pensez à l'Optimisation avec des Indices
Les indices sont cruciaux pour améliorer les performances des requêtes sur de grands ensembles de données.