web-dev-qa-db-fra.com

Création de méthodes pour mettre à jour et enregistrer des documents avec mangouste?

Après avoir vérifié la documentation officielle , je ne sais toujours pas comment créer des méthodes à utiliser dans mongoose pour créer et mettre à jour des documents.

Alors, comment puis-je faire cela?

J'ai quelque chose comme ça en tête:

mySchema.statics.insertSomething = function insertSomething () {
    return this.insert(() ?
}
29
Industrial

Les méthodes sont utilisées pour interagir avec l'instance actuelle du modèle. Exemple:

var AnimalSchema = new Schema({
    name: String
  , type: String
});

// we want to use this on an instance of Animal
AnimalSchema.methods.findSimilarType = function findSimilarType (cb) {
  return this.find({ type: this.type }, cb);
};

var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });

// dog is an instance of Animal
dog.findSimilarType(function (err, dogs) {
  if (err) return ...
  dogs.forEach(..);
})

Les statiques sont utilisées lorsque vous ne souhaitez pas interagir avec une instance, mais que vous effectuez des opérations liées au modèle (par exemple, recherchez tous les animaux nommés 'Rover').

Si vous voulez insérer/mettre à jour une instance d'un modèle (dans la base de données), alors methods est la voie à suivre. Si vous avez juste besoin de sauvegarder/mettre à jour des choses, vous pouvez utiliser la fonction save (déjà existante dans Mongoose). Exemple:

var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });
dog.save(function(err) {
  // we've saved the dog into the db here
  if (err) throw err;

  dog.name = "Spike";
  dog.save(function(err) {
    // we've updated the dog into the db here
    if (err) throw err;
  });
});
48
alessioalex

A partir d'une méthode statique, vous pouvez également créer un nouveau document en procédant comme suit:

schema.statics.createUser = function(callback) {
  var user = new this();
  user.phone_number = "jgkdlajgkldas";
  user.save(callback);
};
58
hydrozen

Ne pensez pas que vous devez créer une fonction qui appelle .save (). Tout ce que vous devez faire avant que le modèle ne soit enregistré peut être fait en utilisant .pre ()

Si vous souhaitez vérifier si le modèle est en cours de création ou de mise à jour, effectuez une vérification pour this.isNew ()

1
Xerri