virtuals createindexes node.js mongodb mongoose nosql

node.js - createindexes - mongoose schema



¿Cuál es la razón principal para usar el ORM de Mongoose? (4)

Conocer un esquema definido de antemano puede ser útil, ya que entonces puede hacer suposiciones que de otra forma no podría.

Por ejemplo, si tengo un esquema de Post , puedo asumir que tiene un campo de body y usarlo como una String sin verificar su existencia.

Por supuesto, incluso en mi modelo bien definido, puedo tener el equivalente de un documento sin esquema dentro de él, por ejemplo

mongoose.model(''Post'', new Schema({ body: String, meta: {} }));

y luego puedo agregar datos aleatorios a myPost.meta a su antojo. Me proporciona un balance muy bueno entre el esquema definido y el esquema.

Lo he estado usando con un nuevo proyecto, pero también es la primera vez que uso MongoDB. Definir un esquema parece innecesario porque pensé que la ventaja de mongo era que no necesitaba esquemas definidos. ¿No puedo simplemente guardar objetos sobre la marcha sin importar el esquema? Entonces, ¿por qué querría? También falta la documentación, lo que hace que algunas cosas que puedo hacer fácilmente en la cáscara mongo sean más difíciles de lo que deberían ser.


He usado Mongoose y tengo que decir que estoy totalmente de acuerdo en que definir de antemano su esquema limita seriamente a MongoDB. La idea detrás de Mongoose era hacerlo seguro y permitir un fácil mantenimiento, pero en realidad no apela a una base de datos basada en documentos.


Lo mejor de Mongoose para MongoDB es el hecho de que puede tener una validación automática incorporada de los datos que está insertando / actualizando. Mongoose también le da la capacidad de predefinir eventos para que ocurran, por ejemplo, antes de que se guarde un documento. Esto es muy poderoso porque consolida el código que tendría que escribir y coloca ese código donde debería estar junto a la lógica del documento y no en la lógica de la aplicación.

Echa un vistazo a middleware y validación para algunos ejemplos. alexyoung / Nodepad en Github tiene algunos buenos ejemplos en el archivo models.js .


Realmente puedes ir en cualquier dirección. Hay muchos mapeadores populares para MongoDB en muchos otros idiomas: Morphia para Java, Doctrine para PHP, Mongoid / Mongomapper para Ruby, etc.

A pesar de que MongoDB es "sin esquema", no es "sin esquema". Hay algo que decir acerca de saber qué esperar al salir del DB.

Por supuesto, también hay algo elegante acerca de cómo construir un objeto ad-hoc y guardarlo. En este punto, node.js es muy nuevo y probablemente es mejor trabajar con las cosas que te gustan.

También falta la documentación, lo que hace que algunas cosas que puedo hacer fácilmente en la cáscara mongo sean más difíciles de lo que deberían ser.

Mongoose sigue siendo un proyecto comunitario y es relativamente nuevo. Si faltan documentos o es necesario escribirlos, estoy seguro de que al equipo de desarrollo le encantará la ayuda. Es probable que pueda conectarse con ellos en los grupos .