Al igual que en MongoDB 3.2, no hay comentarios sobre la razón por la que falló la validación del documento: la expresión de validación general actualmente se evalúa como Verdadero ("OK") o Falso ("Validación fallida del documento"). El comportamiento de validación se puede ajustar con las opciones de configuración validationAction
(error / advertencia) y validationLevel
(estricto / moderado / apagado), pero esto no proporciona ningún contexto adicional para fallas de validación.
Si desea obtener comentarios más detallados, el enfoque recomendado sería agregar lógica de validación a su aplicación en lugar de confiar únicamente en las comprobaciones del lado del servidor. Incluso con la validación del lado del servidor, muchas comprobaciones se realizan mejor en la lógica empresarial de la aplicación para minimizar los viajes de ida y vuelta al servidor de la base de datos y proporcionar comentarios más receptivos al usuario final.
Por ejemplo, la entrada del usuario para una aplicación web (campos obligatorios, formatos de campo, ...) debe validarse en el navegador antes de enviarla a su aplicación o intentar insertarla / actualizarla en la base de datos.
Sin embargo, tiene sentido validar en múltiples niveles para garantizar la calidad de los datos y sería muy útil algún contexto para diagnosticar fallas de validación. Hay una solicitud de función abierta relevante que puede ver / votar en el rastreador de problemas de MongoDB: SERVER-20547: exponga la razón por la cual una operación falla en la validación del documento .
Para obtener más información, también puede estar interesado en Validación de documentos - Parte 1: Agregar la cantidad justa de control sobre sus documentos . Esto pone de relieve algunos de los pros y contras generales de validación de documentos como en MongoDB 3.2, e incluye una tabla de referencia para el resultado basado en validationAction
y validationLevel
opciones de configuración.
mongo-schemer
Node.js, que se basa en AJV (otro validador de esquemas JSON) .Por supuesto, la respuesta original es correcta, manejar la validación antes de llegar a la base de datos es absolutamente una mejor práctica, pero como cuestión práctica si necesita perseguirlo como ahora, puede eliminar temporalmente la validación del Esquema y luego ver lo que se muestra arriba en la colección.
Si se requería un campo pero aparece perdido, vacío o deforme, al menos, reduce su búsqueda. Si los datos se ven bien, eche un vistazo a las validaciones especificadas en el Esquema.
fuente