Overview
La mayoría de las solicitudes de base de datos leen datos de una base de datos o guardan datos en una base de datos. Sin embargo, hay instancias en las que puede requerirse una única operación que lea y guarde datos.
Las operaciones compuestas combinan operaciones de lectura y escritura en una sola instrucción atómica, por lo que no hay posibilidad de que los datos cambien entre una lectura y una escritura posterior.
Si ejecutas cada operación por separado, otra solicitud puede alterar los datos entre las operaciones de lectura y guardar. Estos cambios en los datos pueden no impedir que tu operación tenga éxito, pero pueden dificultar la gestión de errores. Cuando tu aplicación gestiona posibles errores en cualquier etapa del proceso, puede volverse frágil y difícil de probar.
Métodos incorporados
El driver de Node.js proporciona los siguientes métodos para realizar operaciones compuestas:
Estos métodos aceptan un opcional options objeto con opciones configurables Opcionesde clasificación y proyección.
También puede configurar la opción includeResultMetadata para especificar el tipo de retorno de cada uno de estos métodos. Para obtener más información sobre esta opción, consulta la sección Opción includeResultMetadata de esta guía.
Los métodos findOneAndUpdate() y findOneAndDelete() toman la configuración returnDocument, que especifica si el método devuelve la versión anterior o posterior a la actualización del documento modificado.
Opción includeResultMetadata
La opción includeResultMetadata determina el tipo de retorno de los métodos compuestos.
Esta configuración tiene como valor predeterminado false, lo que significa que cada método devuelve el documento coincidente. Si no se encuentra ningún documento coincidente, cada método devuelve null. Si se establece includeResultMetadata en true, el método devuelve un tipo ModifyResult que contiene el documento y los metadatos encontrados.
Supón que una colección contiene solo el siguiente documento:
{ _id: 1, x: "on" }
La siguiente tabla muestra cómo el valor de la opción includeResultMetadata cambia el tipo de retorno del método findOneAndDelete():
Valor de la opción | Sintaxis y Salida | ||||
|---|---|---|---|---|---|
Por defecto: | Documento coincidente No se ha encontrado ningún documento | ||||
| |