2012-02-16 13 views

Respuesta

36

Sí, la principal diferencia es la capacidad de hacer cálculos antes de guardar o como una reacción a la información que aparece mientras construye su nuevo modelo. El ejemplo más común sería asegurarse de que el modelo sea válido antes de intentar guardarlo. Algunos otros ejemplos podrían estar creando relaciones faltantes antes de guardar, valores que deben calcularse sobre la marcha en función de otros atributos y modelos que deben existir pero que posiblemente nunca podrían guardarse en la base de datos (transacciones canceladas).

Así como un ejemplo básico de algunas de las cosas que podría hacer:

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

Gracias, buena explicación :) –

+0

Excepto que de esta manera necesitarías generar la identificación tú mismo. mongoose.Types.ObjectId() es el formato para _id. –

+0

¿Qué tal el asincronismo y la sincronización, ambas operaciones son síncronas? – JohnnyQ

0

prefiero un ejemplo sencillo con los valores de usuario predefinidas y lado de validación del modelo de cheques.

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

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

A continuación, usted debe utilizar validadores en la clase del modelo (Debido a que este puede ser utilizado en otros lugares, esto ayudará a reducir errores/acelerar el desarrollo)

// Save user but perform checks first. 
gameScheme.post('pre', function(userObj, next) { 
    // Do some validation. 
}); 
3

Este código se utiliza para guardar una serie de documentos en la base de datos:

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)' permiso que crear una colección con nombre de modelo y ejecutar .save() método para solo el documento en matriz.

Alternativamente, se puede ahorrar un único documento de esta manera:

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) 

});

Cuestiones relacionadas