Virtual Properties
Mongoose 🟡 MidDefinition
Proprietes calculees qui n'existent pas en base mais sont disponibles sur le document Mongoose. Definies via des getters et setters sur le schema.
Analogie
L'age d'une personne : il n'est pas stocke, il est calcule a partir de la date de naissance.
Exemple de code
userSchema.virtual('fullName').get(function() {
return `${this.firstName} ${this.lastName}`;
});
const user = await User.findById(id);
console.log(user.fullName);
Cas d'usage
Creer des champs derives comme fullName, age ou un URL complete sans les stocker en base.
Anti-pattern
Oublier { toJSON: { virtuals: true } } dans le schema, les virtuals n'apparaissent pas dans les reponses API.