Fonction constructeur personnalisée dans les schémas / modèles Mongoose
Salut à tous!
J'ai défini une Mangouste schéma ci-dessous et a enregistré un modèle (InventoryItemModel). Est-il possible de créer une fonction constructeur pour le schéma, de sorte que lorsque j'instancie un objet à partir du modèle, la fonction sera appelée (par exemple, pour charger l'objet avec la valeur de la base de données)?
var mongoose = require('mongoose')
, Schema = mongoose.Schema
var InventoryItemSchema = new Schema({
Sku : String
, Quanity : Number
, Description : String
, Carted : []
, CreatedDate : {type : Date, default : Date.now}
, ModifiedDate : {type : Date, default : Date.now}
});
mongoose.model('InventoryItem', InventoryItemSchema);
var item = new InventoryItem();
Puis-je ajouter un peu de constructeur personnalisé fonctionner, de sorte que l'article sera rempli à partir de la base de données lors de l'instanciation?
source d'informationauteur Gary
Vous devez vous connecter pour publier un commentaire.
Selon la direction que vous voulez prendre, vous pouvez:
1) L'Utilisation Des Hooks
Crochets sont déclenchées automatiquement lorsque les modèles init, de valider, d'enregistrer et de supprimer.
C'est le "dedans-dehors" de la solution.
Vous pouvez consulter les docs ici:
2) Écrire une statique de la fonction de création de votre schéma.
Statique en direct sur votre modèle objet et peuvent être utilisées pour remplacer des fonctionnalités comme la création d'un nouveau modèle. Si vous avez de la logique supplémentaire pour votre
create
étape, vous pouvez l'écrire vous-même dans une fonction statique. C'est le "dehors" de la solution:Voici une implémentation de l'option n ° 2 de la
@hunterloftis
's réponse.Lorsque vous souhaitez créer un nouveau modèle de someSchema, au lieu de
ce faire
J'ai rencontré ce problème moi-même et a écrit une mangouste plugin qui va vous aider à résoudre votre problème
Voici les pensions de titres (il est aussi disponible sur npm): https://github.com/IlskenLabs/mongoose-construct
Vous avez besoin d'exporter. Voici un exemple: