Servidor Couchbase

Cargar Modelos Anidados Con Ottoman Cuando Se Encuentra Un Modelo Padre En Node.js

Anteriormente escribí sobre fácilmente
desarrollo de aplicaciones Node.js y Couchbase con Ottoman
para ODM. Ese post era sólo una muestra de lo que Ottoman puede hacer y de cómo usted
puede compararlo con las cosas que Mongoose puede hacer con MongoDB.

Esta vez vamos a ir un paso más allá y veremos algunos casos de uso que hacen brillar a Ottoman.

El SDK de Node.js para Couchbase tiene muchas formas diferentes de trabajar con documentos. Operaciones CRUD, consultas N1QL, Couchbase Views, estas
son cosas estupendas, pero ¿qué ocurre cuando los datos se vuelven realmente salvajes? Por salvaje me refiero a que tienes documentos con
relaciones y estructuras complejas. Podrías usar Couchbase Views y operaciones CRUD, pero si tus relaciones son complejas, estás
va a tener un montón de código Node.js para la manipulación de datos. Podrías usar consultas N1QL, pero con relaciones complejas vas a
para quedarte con enormes consultas complicadas con muchas uniones. ¿Qué hay que hacer?

Algunos ejemplos de modelización

Digamos que estamos trabajando con los siguientes modelos de documentos. Vamos a suponer que esta aplicación es algún tipo de gestión de proyectos
aplicación.

Un modelo de proyecto

Dado que estamos creando proyectos, no sólo necesitaremos información sobre el proyecto en sí, sino también sobre quién forma parte de él. Tomemos el
siguiendo como ejemplo el modelo otomano:

En el modelo anterior, el propietario es un modelo otomano diferente llamado Usuariopero el usuarios es un
matriz de ese Usuario modelo.

Un modelo de usuario

Con el modelo de proyecto en su lugar tenemos que definir el modelo de usuario en Ottoman. Podría ser algo como esto:

El modelo de usuario anterior es sólo una cadena de datos estándar. No hay referencias a otros modelos como vimos en el modelo de proyecto. Ahora
tienen que preocuparse de consultar estos dos modelos de la mejor manera.

Consulta profunda con otomana

Supongamos que queremos consultar los proyectos de nuestra aplicación. Esta consulta sería típicamente algo como esto:

Los resultados de esta consulta pueden ser parecidos a los siguientes:

¿Qué está mal aquí? Bueno, la consulta sólo cargó una cantidad superficial de datos. Por ejemplo, ninguna de la información real del usuario cargado,
sólo las referencias a esos documentos de usuario.

¿Cómo podemos hacer una búsqueda profunda de los demás documentos? Echa un vistazo a esta revisión de nuestra consulta:

Obsérvese el uso de {carga: ["usuarios"]} en este caso. Esto significa que queremos cargar todos los modelos de usuario en el array
cuando ejecutamos nuestra consulta. ¿Y si quisiéramos cargar también los documentos del propietario? Haríamos algo como
{carga: ["usuarios", "propietario"]} para cargarlos también.

Complicar el modelo otomano

Ahora vamos a cambiar un poco nuestro modelo de datos. Digamos que el modelo de nuestro proyecto Ottoman ahora se ve así:

En lugar de una matriz de modelos otomanos, ahora trabajamos con una matriz de objetos que contienen un modelo otomano.

Cambiar la consulta de nuestra otomana profunda

Con el cambio de nuestro modelo de datos viene un cambio en nuestra consulta. No tiene sentido hacer {carga: ["comentarios"]} porque
comentarios no es un modelo otomano. No hay nada que cargar. En su lugar tenemos que cambiar nuestra consulta para que se vea así:

Obsérvese el uso de comentarios[*].usuario arriba. Estamos cargando el modelo de usuario que existe en todos los elementos del objeto
matriz.

Conclusión

Usted acaba de ver cómo cargar modelos hijo todo dentro de una sola consulta. Aunque es muy posible utilizando una consulta N1QL, tomaría unos cuantos
ÚNASE A para hacer el trabajo. Todo depende de sus preferencias, pero si le gusta el enfoque ODM, Ottoman
y el carga es una gran opción.

En la página compiance Proyecto GitHub como
así como en un serie de seminarios web que hice sobre desarrollo full stack.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.