Question

Je l'ai trouvé deux approche pour créer un nouveau document nodejs lorsque je travaille avec mangouste.

Première :

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

Deuxième

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

Y at-il la différence?

Était-ce utile?

La solution

Oui, la principale différence est la capacité de faire des calculs avant d'enregistrer ou en réaction à l'information qui vient pendant que vous construisez votre nouveau modèle. L'exemple le plus commun ferait que le modèle est valide avant d'essayer de l'enregistrer. D'autres exemples pourraient être créer des relations manquantes avant d'enregistrer, les valeurs qui doivent être calculées à la volée en fonction d'autres attributs, et les modèles qui ont besoin d'exister, mais pourrait jamais être enregistré dans la base de données (transactions avortées).

Donc, comme un exemple de base de quelques-unes des choses que vous pouvez faire:

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) {
  //
});

Autres conseils

Ce code est pour l'enregistrement d'un tableau de documents dans la base de données:

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) » permis qui créent une collection avec le nom du modèle et exécuter méthode .save() pour le document uniquement dans un tableau.

Vous pouvez enregistrer un seul document de cette façon:

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)

});

Je préfère un exemple simple avec des valeurs d'utilisateur prédéfinies et le contrôle côté modèle de validation.

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

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

Ensuite, vous devez utiliser validateurs dans la classe de modèle (Parce que cela peut être utilisé dans d'autres endroits, cela contribuera à réduire les erreurs / accélérer le développement)

// Save user but perform checks first.
gameScheme.post('pre', function(userObj, next) {
    // Do some validation.
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top