Couchbase Móvil

Guardar imágenes capturadas en una aplicación NativeScript Angular a Couchbase

Cuando se trata de aplicaciones móviles, me plantean una serie de preguntas concretas: la primera es cómo guardar las imágenes capturadas, y la segunda, cómo sincronizarlas entre dispositivos o con una base de datos remota. Como soy un gran fan de NativeScript para el desarrollo de Android e iOS, pensé que sería genial compartir uno de los muchos ejemplos posibles para resolver este problema.

Vamos a ver cómo capturar imágenes en una aplicación NativeScript utilizando Angular y guardar esas imágenes capturadas en Couchbase Lite, una base de datos integrada a nivel de dispositivo.

En adelante, es importante tener en cuenta que hay muchas maneras de guardar imágenes o cualquier otro dato de archivo dentro de una aplicación móvil. Por ejemplo, puedes guardarlos en una base de datos o en el sistema de archivos. En este ejemplo vamos a guardarlos directamente en la base de datos, pero investiga qué estrategia te funcionará mejor.

NativeScript Couchbase Photos

En la imagen animada anterior se nos presenta la posibilidad de capturar imágenes. Las cosas son un poco diferentes en un simulador, pero en un dispositivo la cámara se abrirá. Después de capturar una imagen se presentará en la pantalla y se guardará en Couchbase Lite como una cadena con formato base64.

Requisitos

No hay muchos requisitos para tener éxito con esta guía. Como mínimo necesitarás lo siguiente:

  • NativeScript CLI
  • Android SDK para Android y Xcode para iOS

Para poder construir para Android necesitarás el SDK de Android y para poder construir para iOS necesitarás Xcode, que solo está disponible en ordenadores macOS. Para esta guía en particular, no es necesaria una instancia remota de Couchbase Server.

Creación de un nuevo proyecto NativeScript con Angular

Con los prerrequisitos instalados y listos para funcionar, necesitamos crear un nuevo proyecto en algún lugar de nuestro ordenador.

Desde la CLI de NativeScript, ejecute lo siguiente:

El comando anterior creará un nuevo proyecto Angular, por lo tanto el comando --ng bandera.

Antes de empezar a desarrollar, necesitaremos instalar el plugin de Couchbase para NativeScript. Esto se puede hacer ejecutando lo siguiente:

Aunque técnicamente podemos empezar a desarrollar la aplicación, hay un asunto más del que ocuparse. En iOS es un requisito explicar cada uno de los permisos que se utilizan. Poder hacer fotos o usar la galería es una petición de permiso, así que tenemos que explicarlo.

Abra el archivo app/App_Resources/iOS/Info.plist e incluya lo siguiente:

Lo anterior evitará cualquier error durante el tiempo de compilación o de ejecución. Ahora podemos empezar a desarrollar con seguridad nuestra aplicación móvil para Android e iOS.

Desarrollo de la lógica central de la aplicación y de la interfaz de usuario

Antes de empezar a añadir nuestro propio código, vamos a despojarnos de un montón de código de plantilla que se incluye al crear un nuevo proyecto NativeScript con Angular.

Esto va a ser una aplicación de una sola página por lo que necesitamos eliminar cualquiera de las rutas de navegación preexistentes. Comience por abrir el proyecto app/app.routing.ts y que tenga el siguiente aspecto:

Lo único que hicimos fue eliminar las rutas del rutas array. Técnicamente podemos eliminar este archivo, pero es más fácil quitar lo que no vamos a utilizar.

Ahora abra el proyecto app/app.module.ts y hacer que el TypeScript se parezca a lo siguiente:

Fíjate que en lo anterior hemos eliminado cualquier referencia a los archivos MVC que antes eran rutas. Esto incluye HTML, TypeScript y el servicio Angular que se proporcionó.

A la hora de añadir nuevo contenido, vamos a centrarnos primero en la lógica TypeScript, para pasar después a la interfaz de usuario HTML. Abra el proyecto app/app.component.ts e incluya lo siguiente:

En el código anterior ocurren muchas cosas, así que vamos a desglosarlo.

Habíamos descargado previamente el plugin de Couchbase para NativeScript, pero ahora necesitamos importarlo junto con otras cosas:

La funcionalidad de la cámara ya está incluida en NativeScript, sólo tenemos que importarla. Cuando se trata de manipular los datos de la cámara, la función Fuente de imágenes es lo que usaremos.

Dentro del AppComponent tenemos dos variables:

En base de datos contendrá nuestra instancia abierta de Couchbase Lite y el archivo imágenes contendrá todas las imágenes guardadas que se presentarán en la pantalla.

Dentro del constructor abrimos nuestra base de datos, creamos una vista que más tarde podremos consultar, e inicializamos el array que almacenará nuestras imágenes.

La vista que estamos creando devolverá todos los documentos NoSQL que tengan una propiedad llamada tipo que se establece en imagen que nos representa que es una de las imágenes posibles para mostrar en la pantalla.

Porque los datos nunca deben cargarse en el constructor llevamos las cosas al método ngOnInit método:

En ngOnInit se activa después de que constructor y consultará la vista previamente creada. Cada documento guardado tendrá una propiedad llamada imagen que contiene datos de imagen en base64. Este modelo se basa en nuestro diseño.

Tras obtener los datos en base64 se convierten en un Fuente de imágenes y se añade a nuestra matriz para que aparezca en la pantalla.

Lo anterior captura es llamado a través de la pulsación de un botón en nuestro HTML. Lanzará la cámara con algunos ajustes definidos.

Si la captura se realiza correctamente, la imagen se convertirá a base64 y se creará un documento NoSQL con información diversa junto a los datos base64.

No está tan mal, ¿verdad?

Ahora queremos echar un vistazo al código HTML que acompaña a esta lógica. Abra el proyecto app/app.component.html e incluya lo siguiente:

En el HTML anterior tenemos una barra de acción con un botón que activará la cámara. Dentro del contenido central de la página tenemos un bucle que recorrerá cada imagen del array y la mostrará en pantalla.

Conclusión

Acabas de ver cómo crear una aplicación básica de captura de imágenes con NativeScript y Angular que guarda los datos de las imágenes directamente en documentos NoSQL de Couchbase Lite como cadenas codificadas en base64. La próxima vez vamos a ver cómo sincronizar estos datos de imagen entre dispositivos y una instancia de base de datos remota.

Mientras tanto, echa un vistazo a este otro tutorial sobre el uso de NativeScript con Couchbase titulado, Operaciones clave-valor en Couchbase Mobile mediante NativeScript y Angular.

¿Quieres más ayuda con Couchbase para Android e iOS? Echa un vistazo a la Portal para desarrolladores de Couchbase para consultar documentación y ejemplos.

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.

3 Comentarios

  1. Gracias por el tutorial. Encontrado que para NS3.0, la importación de la cámara debe ser de "nativescript-cámara".

  2. Hola, acabo de probar este código (estoy intentando guardar imágenes en Couchbase como Base64 y luego recuperarlas), y me estoy encontrando con el mismo problema con esta aplicación de ejemplo que con la aplicación que estoy construyendo:
    En la función capture(), no puedo utilizar let base64=picture.toBase64String("png", 70) porque "Property 'toBase64String' does not exist on type 'ImageAsset'". Si ejecuto picture a través de ImageSource.fromAsset(picture).then(...), puedo entonces aplicar .toBase64String, pero no soy capaz de restaurar con éxito usando .fromBase64.
    Estoy totalmente perdido y espero que pueda ayudarme.

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.