Frage

Ich habe zwei Ansätze gefunden, um ein neues Dokument in NodeJs zu erstellen, wenn ich mit Mongoose arbeite.

Zuerst:

var instance = new MyModel();
instance.key = 'hello';
instance.save(function (err) {
  //
});

Zweite

MyModel.create({key: 'hello'}, function (err) {
  //
});

Gibt es einen Unterschied?

War es hilfreich?

Lösung

Ja, der Hauptunterschied besteht darin, Berechnungen durchzuführen, bevor Sie sparen oder auf Informationen reagieren, die beim Aufbau Ihres neuen Modells auftauchen. Das häufigste Beispiel wäre, sicherzustellen, dass das Modell gültig ist, bevor er versucht, es zu speichern. Einige andere Beispiele erstellen möglicherweise fehlende Beziehungen vor dem Speichern, Werte, die im laufenden Fliegen basierend auf anderen Attributen berechnet werden müssen, und Modelle, die existieren müssen, aber möglicherweise niemals in der Datenbank gespeichert werden können (abgebrochene Transaktionen).

Also als grundlegendes Beispiel für einige der Dinge, die Sie tun könnten:

var instance = new MyModel();

// Validating
assert(!instance.errors.length);

// Attributes dependent on other fields
instance.foo = (instance.bar) ? 'bar' : 'foo';

// Create missing associations
AuthorModel.find({ name: 'Johnny McAwesome' }, function (err, docs) {
  if (!docs.length) {
     // ... Create the missing object
  }
});

// Ditch the model on abort without hitting the database.
if(abort) {
  delete instance;
}

instance.save(function (err) {
  //
});

Andere Tipps

Dieser Code dient zum Speichern einer Reihe von Dokumenten in Datenbank:

app.get("/api/setupTodos", function (req, res) {

var nameModel = mongoose.model("nameModel", yourSchema);
//create an array of documents
var listDocuments= [
    {
        username: "test",
        todo: "Buy milk",
        isDone: true,
        hasAttachment: false
    },
    {
        username: "test",
        todo: "Feed dog",
        isDone: false,
        hasAttachment: false
    },
    {
        username: "test",
        todo: "Learn Node",
        isDone: false,
        hasAttachment: false
    }
];

nameModel.create(listDocuments, function (err, results) {

    res.send(results);
});

'namemodel.create (listDocuments)' zulassen, die eine Sammlung mit Namen des Modells und Ausführens erstellen .save() Methode nur für Dokument in Array.

Alternativ können Sie auf diese Weise nur ein Dokument speichern:

var myModule= mongoose.model("nameModel", yourSchema);

    var firstDocument = myModule({
      name: String,
surname: String
    });

firstDocument.save(function(err, result) {
  if(if err) throw err;
  res.send(result)

});

Ich bevorzuge ein einfaches Beispiel mit vordefinierten Benutzerwerten und Validierungsüberprüfungsmodellseite.

   // Create new user.
   let newUser = {
       username: req.body.username,
       password: passwordHashed,
       salt: salt,
       authorisationKey: authCode
   };

   // From require('UserModel');
   return ModelUser.create(newUser);

Dann sollten Sie Validatoren in der Modellklasse verwenden (da dies an anderen Orten verwendet werden kann. Dies hilft, Fehler zu verringern/die Entwicklung zu beschleunigen).

// Save user but perform checks first.
gameScheme.post('pre', function(userObj, next) {
    // Do some validation.
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top