Hace poco leí el artículo sobre Scotch.io sobre el uso de Mongoose y MongoDB. Pensé, oye, Couchbase puede hacer lo mismo si usas Ottoman en lugar de Mongoose.

Este artículo va a recorrer las mismas comparaciones que el artículo de Scotch.io, pero utilizando Ottoman y Couchbase en lugar de Mongoose y MongoDB.

Qué es el otomano

Ottoman, para Couchbase, es un mapeador de documentos de objetos (ODM) que le permite construir cómo sería su modelo de objetos, y luego auto-generar toda la lógica boilerplate que va con él.

Ottoman nos permite acceder fácilmente a comandos CRUD para Couchbase Server usando Node.js. Para usar Ottoman, asegúrate de añadirlo a tu proyecto Node.js usando el siguiente comando:

Ahora que las librerías han sido descargadas a nuestro proyecto, necesitamos incluirlas en nuestro código fuente. Esto se puede hacer añadiendo lo siguiente a uno de sus archivos JavaScript:

Con las librerías de Ottoman incluidas en el proyecto, ahora tenemos que dar acceso a Ottoman a uno de nuestros cubos.

Si has utilizado el SDK de Node.js para Couchbase antes, lo anterior te resultará familiar. Simplemente nos conectamos a un clúster, abrimos un bucket y lo asignamos a Ottoman.

En este punto podemos empezar a utilizar Ottoman para acelerar nuestro proceso de desarrollo.

Definir un modelo

Antes de que podamos empezar a hacer operaciones CRUD contra Couchbase, necesitamos definir nuestro modelo Ottoman. Estos modelos representan documentos en nuestra base de datos.

Los modelos que creamos con Ottoman pueden tener propiedades y métodos. A la parte de los métodos llegaremos pronto, pero por ahora echa un vistazo a modelos sencillos con propiedades.

Modelo de ejemplo para usuarios

Tomemos el siguiente modelo para los nuevos usuarios de nuestra aplicación (sí, es simple en este ejemplo).

Ahora tenemos un modelo que puede utilizarse así:

Fijamos el Nombre de pila, apellidoy correo electrónicopero no tenemos que fijar el fecha_de_creación valor. Esto se debe a que por defecto, si no lo establecemos, se establecerá como la marca de tiempo actual.

Métodos personalizados

Digamos que queremos que un método haga una tarea consistente dentro de nuestro modelo. Tomemos por ejemplo lo siguiente, suponiendo que ya hemos creado nuestro simple objeto UserModel.

En teoría, esto imprimiría el nombre y el apellido de un modelo otomano concreto.

Ejemplos de uso de métodos personalizados

Para utilizar un método personalizado, podemos utilizar el método printWhoDaBoss como se ha visto anteriormente y hacer algo como esto:

Lo anterior imprimiría Nic Raboy es el jefe. Por supuesto, esa función en particular es inútil, pero puedes usar tu imaginación para construir algo mejor con el concepto.

Ejecutar una función antes de guardarla

¿Qué pasa si queremos ejecutar una tarea antes de que un documento se guarde en Couchbase? Esto se puede conseguir utilizando la función pre método reservado que viene con Ottoman. Por ejemplo, digamos que queremos modificar el apellido de todos antes de que se guarden:

Ahora, cuando alguien intente guardar un documento, lo que se demostrará en la siguiente sección, se antepondrá su apellido. Por ejemplo Raboy se convertiría en da Boss Raboy. No es especialmente útil en este caso, pero puedes hacerte una idea.

Crear un documento

Para crear documentos tenemos que utilizar la función incorporada guardar de Ottoman. Con nuestro modelo, podemos hacer algo como esto:

Se generaría una clave y el documento se guardaría en la base de datos.

Lectura de documentos NoSQL

Leer documentos con Ottoman es un poco diferente porque hay diferentes tipos de lecturas que podemos hacer. Vamos a desglosar algunos escenarios de uso.

Buscar todos los documentos

A menudo es difícil en NoSQL obtener documentos cuando no conoces el id del documento. Sin crear una vista o usar la tecnología N1QL de Couchbase, no tendrías mucha suerte. Aquí tienes una alternativa.

Lo anterior encontraría todos los documentos que fueron creados usando el Ottoman UserModel.

Buscar un documento concreto

He aquí otro escenario. Supongamos que no quieres todos los documentos y no conoces el id del documento. Puedes hacer una consulta con Ottoman expandiendo sobre la base de datos encontrar mando.

Buscar un documento por ID

Digamos que conoces el id del documento que quieres. Usted puede agarrar el modelo otomano ejecutando:

Esto es similar a utilizar la función consiga del SDK de Node.js, sin embargo, en lugar de datos JSON con los que te quedas, tienes un modelo Ottoman completamente funcional.

Actualizar un documento existente

Actualizar documentos con Ottoman puede ser un poco complicado porque primero debes haber cargado el documento antes de intentar hacer una manipulación sobre él. Lo que podrías hacer es encontrar el documento en particular por id, y luego ejecutar el comando guardar de esta manera:

En el ejemplo anterior, primero habría obtenido mi modelo concreto, habría cambiado sólo el nombre del mismo y, a continuación, habría llamado a guardar. La dirección guardar creará o actualizará, pero depende de usted conducir hasta ese punto.

Eliminar un documento

La supresión de un documento funcionará de forma similar a la actualización de un documento con Ottoman. Primero debe cargar el documento haciendo una búsqueda, luego llamando a la función eliminar función. A continuación se muestra un ejemplo sencillo:

Conclusión

Ottoman es una gran herramienta ODM para Couchbase que modela nuestros objetos y juega muy bien para operaciones de tipo CRUD. Mongoose para MongoDB intenta ser como Ottoman como se demuestra en el artículo sobre Scotch.io sobre Mongoose y MongoDB. Este artículo pretendía mostrar cómo Ottoman es igual de fácil, si no más, de usar.

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.

Dejar una respuesta