Création de méthodes de mise à jour & enregistrer des documents avec mangouste?
Après vérification de la la documentation officielle, je ne suis toujours pas sûr de la manière de créer des méthodes pour l'utilisation dans mongoose
pour créer & mise à jour des documents.
Alors, comment puis-je faire cela?
J'ai quelque chose comme ceci à l'esprit:
mySchema.statics.insertSomething = function insertSomething () {
return this.insert(() ?
}
Vous devez vous connecter pour publier un commentaire.
Méthodes sont utilisées pour interagir avec l'instance actuelle du modèle. Exemple:
Statiques sont utilisés lorsque vous ne voulez pas d'interagir avec un exemple, mais ne concernant le modèle des trucs (par exemple, rechercher tous les Animaux nommé 'Rover').
Si vous souhaitez insérer /mettre à jour une instance d'un modèle (dans la base), puis
methods
sont la voie à suivre. Si vous avez juste besoin d'enregistrer/mettre à jour des choses que vous pouvez utiliser lesave
fonction (déjà existant dans la Mangouste). Exemple:dog.save()
de l'intérieur d'une méthode?this.save()
, depuisthis
ferait référence àdog
return this.model('Animal').find({ type: this.type }, cb);
je n'ai jamais compris pourquoi nous devons utilisermodel('Animal')
ici, comme nous sommes l'ajout de cette méthode à l'Animal de schéma. On peut supposer que c'est en option puis - savez-vous pourquoi c'est écrit comme ça dans les docs?mongoose.model('Animal', AnimalSchema)
pour inscrire le schéma, puis ultérieurement dans votre code ailleursmongoose.model('Animal')
de saisir le modèle de nouveau. Lorsque vous ajoutez quelque chose pour le modèle que vous l'ajouter à la schéma commeAnimalSchema.methods.isCat
ouAnimalSchema.statics.findAllDogs
.De l'intérieur d'une méthode statique, vous pouvez également créer un nouveau document en faisant :
this
dans une mangouste requête, il va pointer lethis
de cette requête, pas lathis
de l'instance statique. C'était mon problème.Ne pense pas que vous avez besoin de créer une fonction qui appelle .save(). Tout ce que vous devez faire avant que le modèle est enregistré peut être fait en utilisant .pre()
Si vous voulez le vérifier si le modèle est créé ou mis à jour faire une vérification de cette.isNew()