update remove example delete node.js mongodb mongoose

node.js - remove - mongoose update



¿Cómo maneja `mongoose` la adición de documentos que tienen FIELDS que son__NOT__ parte del esquema? (2)

Estoy jugando con la guía de inicio rápido para la mangosta.

http://mongoosejs.com/docs/index.html

Supuse que arrojaría un error cuando guardé un documento con un campo NO definido en el esquema. En cambio, creó un nuevo documento en la colección, pero sin el campo. (Nota: me doy cuenta de que mongodb es "sin esquema" por lo que cada documento en una colección puede ser completamente diferente el uno del otro).

Dos preguntas

  1. ¿Cómo maneja mongoose agregar documentos que tienen campos que NO son parte del esquema? Parece que simplemente los ignora, y si ninguno de los campos se correlaciona, creará un documento vacío solo con un ObjectId.
  2. ¿Y cómo hace que mongoose avise si no se ha agregado un campo específico de un documento a pesar de que el documento se guardó con éxito?

(La pregunta es, creo, lo suficientemente simple, así que no agregué el código, pero definitivamente lo haré si alguien lo solicita).

Gracias.


Mongoose le permite agregar middleware "validador" y "pre" que realizan funciones útiles. Por ejemplo, puede especificar el atributo required en su esquema para indicar que se debe establecer una propiedad específica. También podría especificar un validator que pueda crear para arrojar un error si la propiedad asociada no cumple con sus especificaciones. También puede configurar un "pre" validator Mongoose que examine el documento y arroje un error si encuentra campos que están fuera de su esquema. Al hacer que su middleware llame a next() (o no), puede controlar si procede a guardar el documento (o no).

Esta question/response en puede ayudar a determinar si un objeto tiene o no una propiedad.


P: ¿Cómo maneja la mangosta al agregar documentos que tienen campos que NO son parte del esquema?

La opción estricta (habilitada de manera predeterminada) garantiza que los valores pasados ​​a nuestro constructor de modelo que no se hayan especificado en nuestro esquema no se guarden en el archivo db. - documentos de mangosta

P: ¿Cómo se hace que mongoose le avise si no se ha agregado un campo específico de un documento a pesar de que el documento se guardó correctamente?

La opción estricta también se puede configurar para "lanzar", lo que provocará que se produzcan errores en lugar de descartar los datos incorrectos. - documentos de mangosta

... pero si absolutamente requiere guardar claves que no están en el esquema, entonces tiene que manejar esto usted mismo. Dos enfoques que puedo pensar son:

1. Para guardar claves que no están en el esquema, puede establecer strict a falso en una instancia de modelo específica o en una actualización específica . Entonces, necesitaría escribir alguna validación de que (a) los valores en el documento se ajustaban a sus estándares y (b) que el documento guardado en la base de datos coincidía con el documento que envió.

2. Podría ver si el tipo de esquema Mixto podría servir a sus necesidades en lugar de deshabilitar las validaciones que vienen con strict . (Desplácese hacia abajo hasta ''notas de uso'' en ese enlace, ya que el enlace a la documentación ''Mixto'' parece estar roto por el momento).