Estoy a punto de trabajar en una nueva aplicación. Y hemos decidido usar mongo como nuestra base de datos para la creación rápida de prototipos junto con mongoose para un orm. Mi pregunta es, después de declarar un nuevo modelo. Cuando intento guardar un nuevo modelo, ¿filtrará las claves adicionales? Por ejemplo. Digamos que un modelo tiene un name de propiedad. ¿El modelo ignorará las teclas adicionales?
let user = new User({ name:"bob", randomKey: "" }); user.save();La razón es porque quiero poder hacer esto en un controlador expreso.
let user = new User({ ...req.body}); user.save();O en los casos en que un esquema tiene muchos accesorios.
Sí, mongoose no guarda los campos que no están presentes en la definición del esquema.
Esquema del estudiante: -
var Student = mongoose.model('Student', { name: String, event : String });Publicar solicitud:-
{ "name" : "extra fields", "event" : "from postman", "event2" : "not on schema" }Recopilación:-
El atributo event2 (que no forma parte del esquema del alumno) no se ha guardado.
{ "_id" : ObjectId("5901d1d830fa36f020e88ea7"), "name" : "extra fields", "event" : "from postman", "__v" : 0 }Este es ahora un cambio importante en v4.13.19. (al menos en adelante v4.13.19)
Ahora solo puedes -
Mongoose no guardará ningún campo que no esté presente en el esquema, debe definir un esquema como:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var productSchema = new Schema({ title: String, author: String }); module.exports = mongoose.model('Product', productSchema);producto de ahorro
var newProduct = new Product(); // set the user's local credentials newProduct.title = title; newProduct.author = author; newProduct.addintionalData = 'RandomData'; //wont save this data newProduct.save();