mongodb - all - mongoose tutorial español
¿Cómo se usa Mongoose sin definir un esquema? (4)
Creo que esto es lo que estás buscando Mongoose Strict
opción: estricta
La opción estricta (habilitada de forma predeterminada) garantiza que los valores agregados a nuestra instancia de modelo que no se hayan especificado en nuestro esquema no se guarden en el archivo db.
Nota: No establezca en falso a menos que tenga una buena razón.
var thingSchema = new Schema({..}, { strict: false });
var Thing = mongoose.model(''Thing'', thingSchema);
var thing = new Thing({ iAmNotInTheSchema: true });
thing.save() // iAmNotInTheSchema is now saved to the db!!
En versiones anteriores de Mongoose (para node.js) había una opción para usarlo sin definir un esquema
var collection = mongoose.noSchema(db, "User");
Pero en la versión actual, se ha eliminado la función "noSchema". Es probable que mis esquemas cambien a menudo y realmente no encajen con un esquema definido, entonces, ¿existe una nueva forma de usar modelos sin esquema en mangosta?
En realidad, el modo "Mixto" ( Schema.Types.Mixed
) parece hacer exactamente eso en Mongoose ...
acepta un objeto JS de forma libre sin esquema , así que cualquier cosa que le puedas lanzar. Parece que tienes que desencadenar salvaciones en ese objeto manualmente después, pero parece una compensación justa.
Mezclado
Un SchemaType "todo vale", su flexibilidad se basa en que es más difícil de mantener. Mixed está disponible a través de
Schema.Types.Mixed
o pasando un literal de objeto vacío. Los siguientes son equivalentes:
var Any = new Schema({ any: {} }); var Any = new Schema({ any: Schema.Types.Mixed });
Dado que es un tipo sin esquema, puede cambiar el valor a cualquier otra cosa que desee, pero Mongoose pierde la capacidad de detectar automáticamente y guardar esos cambios. Para "decirle" a Mongoose que el valor de un tipo mixto ha cambiado, llame al
.markModified(path)
del documento que pasa la ruta al tipo mixto que acaba de cambiar.
person.anything = { x: [3, 4, { y: "changed" }] }; person.markModified(''anything''); person.save(); // anything will now get saved
Hola Chris, echa un vistazo a Mongous . Estaba teniendo el mismo problema con la mangosta, ya que mis esquemas cambian con mucha frecuencia ahora en desarrollo. Mongous me permitió tener la simplicidad de Mongoose, a la vez que pude definir y cambiar mis "esquemas". Elegí simplemente construir objetos JavaScript estándar y almacenarlos en la base de datos como tal
function User(user){
this.name = user.name
, this.age = user.age
}
app.post(''save/user'', function(req,res,next){
var u = new User(req.body)
db(''mydb.users'').save(u)
res.send(200)
// that''s it! You''ve saved a user
});
Mucho más simple que Mongoose, aunque creo que te pierdes algunas cosas buenas de middleware como "pre". No obstante, no necesitaba nada de eso. ¡¡¡Espero que esto ayude!!!
Ya no es posible.
Puede usar Mongoose con las colecciones que tienen esquema y el controlador de nodo u otro módulo de mongo para aquellos sin esquema.
https://groups.google.com/forum/#!msg/mongoose-orm/Bj9KTjI0NAQ/qSojYmoDwDYJ