it-swarm.com.de

Erstellen von Methoden zum Aktualisieren und Speichern von Dokumenten mit mongoose?

Nach dem Auschecken der offiziellen Dokumentation bin ich immer noch nicht sicher, wie Methoden zur Verwendung in mongoose zum Erstellen und Aktualisieren von Dokumenten erstellt werden.

Wie kann ich das machen?

Ich habe so etwas im Sinn:

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

Methoden werden verwendet, um mit der aktuellen Instanz des Modells zu interagieren. Beispiel:

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(..);
})

Statik wird verwendet, wenn Sie nicht mit einer Instanz interagieren möchten, sondern modellbezogene Dinge erledigen möchten (beispielsweise nach allen Tieren mit dem Namen 'Rover' suchen).

Wenn Sie eine Instanz eines Modells (in die Datenbankbibliothek) einfügen/aktualisieren möchten, ist methods der richtige Weg. Wenn Sie nur Dinge speichern/aktualisieren müssen, können Sie die save-Funktion verwenden (bereits in Mongoose vorhanden). Beispiel:

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

Innerhalb einer statischen Methode können Sie auch ein neues Dokument erstellen, indem Sie Folgendes tun:

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

Denken Sie nicht, dass Sie eine Funktion erstellen müssen, die .save () aufruft. Alles, was Sie tun müssen, bevor das Modell gespeichert wird, kann mit .pre () erledigt werden.

Wenn Sie prüfen möchten, ob das Modell erstellt oder aktualisiert wird, überprüfen Sie dies.isNew ().

1
Xerri