Domanda

ho trovato due approccio per creare nuovo documento in nodejs quando lavoro con mangusta.

prima :

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

Secondo

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

C'è qualche differenza?

È stato utile?

Soluzione

Sì, la differenza principale è la capacità di fare calcoli prima di salvare o come una reazione alle informazioni che viene in su, mentre si sta costruendo il nuovo modello. L'esempio più comune sarebbe fare che il modello è valido prima di tentare di salvarlo. Alcuni altri esempi potrebbero essere la creazione di eventuali rapporti mancanti prima del salvataggio, valori che devono essere calcolati al volo sulla base di altri attributi, e modelli che hanno bisogno di esistere, ma potrebbe potenzialmente mai essere salvati nel database (transazioni abortite).

Quindi, come un esempio di base di alcune delle cose che si potrebbe fare:

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

Altri suggerimenti

Questo codice è per il salvataggio di una serie di documenti in database:

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)' permesso che creano una collezione con il nome del modello e il metodo di esecuzione .save() solo documento in serie.

In alternativa, è possibile salvare un unico documento in questo modo:

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)

});

Io preferisco un esempio facile con i valori utente predefiniti e lato validazione del modello di controllo.

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

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

Poi si dovrebbe utilizzare validatori nella classe del modello (perché questo può essere utilizzato in altri luoghi, ciò contribuirà a ridurre gli errori / accelerare lo sviluppo)

// Save user but perform checks first.
gameScheme.post('pre', function(userObj, next) {
    // Do some validation.
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top