Aprende Couchbase Lite en 5 minutos y sigue el CRUD
Por Matteo Sist, jefe de tecnología móvil, @MOLO17
Uno de los ingredientes clave para aprender a hacer una gran aplicación móvil es utilizar una buena base de datos. Por eso, en este artículo vamos a mostrar lo fácil que es integrar Couchbase Lite en una app para iOS.
¿Qué es Couchbase Lite? Couchbase Lite es el SDK para móviles del Couchbase Móvil que permite a los desarrolladores integrar fácilmente una base de datos NoSQL en aplicaciones móviles.
Este blog repasará las operaciones CRUD (crear, leer, actualizar, eliminar), proporcionando detalles además de consejos y trucos para cada uno de los pasos necesarios, y destacará una de mis funciones favoritas, Sync Gateway.
C como Crear
El primer paso es crear un documento con Couchbase. Couchbase tiene un método para crear un documento, guardarDocumento. Este método acepta dos parámetros. El primero es el documento ( CouchbaseLiteSwift.MutableDocument) y el segundo es un parámetro opcional ( CouchbaseLiteSwift.Control de concurrencia ) que da a los usuarios la opción de resolver posibles conflictos automáticamente o lanzar una excepción para permitir a los usuarios resolver el conflicto manualmente. El valor por defecto es "LastWriteWins“.
Cómo utilizarlo guardarDocumento ¿método?
En primer lugar, necesitamos una instancia de base de datos ( CouchbaseLiteSwift.Base de datos ), así que basta con iniciar una nueva base de datos:
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: "NombreBaseDatos") } captura { fatalError("Error al abrir la base de datos") } |
A continuación, tenemos que crear el documento que queremos guardar. Por lo tanto, crear un nuevo documento CouchbaseLiteSwift.MutableDocument y añadir algunos campos:
1 2 3 4 5 |
deje doc = MutableDocument(id: "IdentificadorMiDocumentoÚnico") doc.setString("Mickey", forKey: "nombre") doc.setString("Ratón", forKey: "apellido") doc.setInt(91, forKey: "edad") doc.setString("Contacto", forKey: "tipo") |
Por último, guárdalo:
1 2 3 4 5 |
do { pruebe base de datos.guardarDocumento(doc, concurrencyControl: .lastWriteWins) } captura { fatalError("Error al guardar el documento") } |
Como puedes ver, crear y guardar un documento dentro de Couchbase es realmente sencillo e intuitivo.
Trucos y consejos para aprender con Couchbase Lite
– Mecanografía: En el documento he añadido un campo llamado tipo doc.setString("Contacto", forKey: "tipo") . Se trata de un truco que permite dividir fácilmente un documento en tipos y facilita las operaciones de lectura. Más adelante demostraré cómo utilizar este campo.
– Id: No necesitas proporcionar un id cuando creas un documento. Es un campo opcional, y si no lo haces, Couchbase genera un UUID por ti.
– Creación de documentos: Si lo desea, puede crear un documento a partir de un diccionario (o un mapa clave-valor) simplemente pasando el diccionario como parámetro en el constructor del documento.
R de lectura
Ahora que hemos creado nuestro primer documento también queremos leerlo y mostrarlo en una lista. Hay dos formas de recuperar un documento:
- Obtener por id
- Consulta
Obtener por id
Para recuperar un documento utilizando su id necesitamos primero una instancia de base de datos para una operación de lectura.
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: "NombreBaseDatos") } captura { fatalError("Error al abrir la base de datos") } |
Entonces podemos utilizar el método documento que necesita el id del documento para recuperarlo. El tipo de retorno de este método es un objeto documento opcional (CouchbaseLiteSwift.Document?) que será nil si el documento no existe.
1 |
deje doc = base de datos.documento(conID: "IdentificadorMiDocumentoÚnico") |
Consulta
En cuanto a la operación get by id, también necesitamos una instancia de la base de datos para la consulta.
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: "NombreBaseDatos") } captura { fatalError("Error al abrir la base de datos") } |
El siguiente paso es crear la consulta. Para ello necesitamos utilizar el metalenguaje **N1QL**. N1QL, el lenguaje de consulta de Couchbase que extiende SQL a datos JSON, permite a los usuarios definir una consulta con una sintaxis similar a SQL sobre una base de datos NoSQL. Mira el ejemplo de abajo.
1 2 3 4 |
deje consulta = Constructor de consultas .seleccione(SeleccionarResultado.todos()) .de(Fuente de datos.base de datos(base de datos)) .donde(Expresión.propiedad("tipo").equalTo(Expresión.cadena("Contacto"))) |
De este modo, definimos una consulta sencilla que busca todos los documentos (con todos los campos, por supuesto) de la base de datos en los que el campo "tipo" es igual a "Contacto".
Ahora, sólo tenemos que ejecutar la consulta y recibiremos un conjunto de resultados con todos los documentos que cumplan las opciones de la consulta.
1 2 3 4 5 |
do { resultado = pruebe consulta.ejecutar() } captura { fatalError("Consulta no válida") } |
El objeto resultado se ajusta al protocolo iterador, por lo que puede iterarse para obtener cada documento y hacer cosas. El resultado devuelto por la consulta es una instantánea de los datos en el momento de la ejecución. No se tendrán en cuenta los cambios de documento realizados posteriormente.
Trucos y consejos Aprender con Couchbase Lite
– Escucha de consultas: Couchbase también proporciona otro método para ejecutar consultas que permiten a los usuarios no sólo recuperar datos de la consulta construida, sino también escuchar futuros cambios. Hacer esto es tan simple como el primer método. Echa un vistazo
1 2 3 |
deje ficha = consulta.addChangeListener { consultaCambio en resultado = consultaCambio.resultados?.todosResultados() } |
El listener será invocado cada vez que cambien los documentos incluidos en el resultado de la consulta. El token devuelto por addChangeListener
se pueden utilizar los siguientes métodos para dejar de escuchar:
1 |
consulta.removeChangeListener(withToken: ficha) |
– Conversión de documentos: En cuanto a la creación, puede convertir fácilmente un documento en un diccionario (y viceversa) utilizando toDictionary() método.
U como Actualización
Ahora que ya podemos crear y leer documentos en Couchbase, vamos a actualizar nuestro documento.
Actualizar un documento es muy similar a crearlo. Basta con obtener un documento para actualizarlo, actualizarlo y volver a guardarlo. Veamos cómo.
Inicie la base de datos:
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: "NombreBaseDatos") } captura { fatalError("Error al abrir la base de datos") } |
Recuperar el documento a actualizar:
1 |
deje doc = base de datos.documento(conID: "IdentificadorMiDocumentoÚnico") |
Edítalo.
1 2 |
deje docToUpdate = doc.toMutable() docToUpdate.setString("Hombre", forKey: "género") |
Y, por supuesto, guárdalo:
1 2 3 4 5 |
do { pruebe base de datos.guardarDocumento(docToUpdate, concurrencyControl: .lastWriteWins) } captura { fatalError("Error al actualizar el documento") } |
D como Borrar
Por último, pero no por ello menos importante, tal vez desee eliminar algunos documentos, he aquí cómo hacerlo.
Como siempre, necesitamos la base de datos.
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: "NombreBaseDatos") } captura { fatalError("Error al abrir la base de datos") } |
De forma similar a la operación de actualización, debemos recuperar el documento a eliminar. Para ello, utilizaremos el método document by id.
1 |
deje doc = base de datos.documento(conID: "IdentificadorMiDocumentoÚnico") |
Ahora podemos utilizar el borrar para eliminar un documento. Al igual que con guardarDocumentopodemos optar por resolver los conflictos de forma manual o automática.
1 2 3 4 5 |
do { pruebe base de datos.borrarDocumento(doc, concurrencyControl: .lastWriteWins) } captura { fatalError("Error al borrar el documento") } |
Couchbase Sync Gateway es tan fácil de aprender como Couchbase Lite
Ahora podemos integrar Couchbase Lite en nuestras aplicaciones utilizando CRUD:
- Crear un documento
- Leer un documento (o muchos) con actualizaciones en tiempo real si queremos
- Actualizar un documento (no es tan diferente de la creación)
- Borrar un documento
Pero aún hay más. Couchbase proporciona otra característica maravillosa: Sync Gateway
Sincroniza
Sync es una de mis funcionalidades favoritas de Couchbase porque es tan simple como efectiva. Couchbase Lite proporciona esta funcionalidad para configurar una base de datos remota.
Profundicemos en el código.
Además de nuestra base de datos, necesitamos otro objeto: el replicador.
1 2 3 4 5 |
do { base de datos = pruebe Base de datos(nombre: Nombre de la base de datos) } captura { fatalError("Error al abrir la base de datos") } |
Lo que necesito para iniciar un objeto replicador (CouchbaseLiteSwift.Replicator) es un objeto de configuración donde el único campo obligatorio es la url del Sync Gateway.
Los demás campos opcionales son replicatorType, donde los usuarios pueden elegir si la replicación debe funcionar hacia arriba, hacia dentro, hacia abajo, o ambas cosas. Otro campo es continuo, un indicador que permite a los usuarios configurar si la replicación debe ejecutarse una sola vez o de forma continua.
1 2 3 4 5 6 |
deje targetEndpoint = URLEndpoint(url: "ws://localhost:4984/bucketname/") deje replConfig = ReplicatorConfiguration(base de datos: base de datos, objetivo: targetEndpoint) replConfig.replicatorType = .pushAndPull replConfig.continuo = verdadero replConfig.autentificador = BasicAuthenticator(nombre de usuario: Nombre de usuario, contraseña: Contraseña) replicador = Replicador(config: replConfig) |
Con el replicador sólo necesitamos iniciar la replicación.
1 |
replicador.iniciar() |
O detener la replicación.
1 |
replicador.stop() |
Trucos y consejos para aprender con Sync
– Estado de la replicación de escucha: Tanto para la consulta como para la replicación podemos añadir un listener para recibir los cambios de estado de la replicación. A continuación se muestra el código.
1 2 3 |
deje ficha = replicador.addChangeListener { cambia en estado = cambia.estado } |
En cuanto a las consultas, el token debe utilizarse para eliminar el oyente del replicador.
1 |
replicador.removeChangeListener(withToken: ficha) |
Conclusión, Couchbase Lite es fácil de aprender
Couchbase Lite, como parte de la suite Couchbase Mobile, es una poderosa flecha en la aljaba de un desarrollador móvil. Es fácil de aprender, y en este artículo solo hemos mostrado una pequeña parte de su potencial, así que mi consejo es que profundices en las funcionalidades de Couchbase que te permitirán integrar fácilmente y tomar el control total de la base de datos que soporta tus aplicaciones móviles.
Sobre Matteo Sist, @MOLO17
Matteo empezó a colaborar con MOLO17 como Desarrollador Android cuando estaba en el instituto (a través de un curso de Tecnología de la Información). Contratado en 2015, se unió al equipo de desarrollo móvil asumiendo el papel de desarrollador clave para las plataformas iOS y Android. Competente en lenguajes de desarrollo de aplicaciones móviles nativasDesde Java y Objective-C hasta los más recientes Kotlin y Swift, ha diseñado y desarrollado varias soluciones de éxito para dispositivos móviles dirigidas a consumidores y empresas. En 2016, se convirtió en Tech Lead gestionando el equipo de desarrollo de aplicaciones móviles, y en 2019, cofundó MobileBridge (una empresa hermana de MOLO17).