Ratnopam Chakrabarti es un desarrollador de software que trabaja actualmente para Ericsson Inc. Lleva bastante tiempo centrado en IoT, tecnologías máquina a máquina, coches conectados y dominios de ciudades inteligentes. Le encanta aprender nuevas tecnologías y ponerlas en práctica. Cuando no está trabajando, le gusta pasar tiempo con su hijo de 3 años.

Ratnopam Chakrabarti

En Parte 1 de esta serie de blogsEn el post anterior, vimos cómo podemos almacenar y recuperar metadatos de imágenes desde y hacia un bucket de Couchbase. En este post (Parte 2), vamos a echar un vistazo a los "me gusta" y mostrar por tagname características de la aplicación.

La idea aquí es utilizar HTML y jQuery en el lado del cliente que interactúan con los componentes de node como route.js que se ejecutan en el lado del servidor. Por ejemplo, el siguiente fragmento de jQuery se encuentra en el lado del cliente y hace una llamada Ajax a la "URL" que se expone como un archivo ruta dentro de route.js en el lado del servidor.

En como es un elemento de anclaje en el que al hacer clic se llama a una nueva ruta en la aplicación de nodo. Aquí está el fragmento:

 

La URL se forma añadiendo '/like/' y el id de la imagen al campo host variable. Una vez que la llamada Ajax se realiza con éxito, la devolución de llamada de éxito correspondiente analiza la respuesta JSON enviada desde el punto final del lado del servidor (routes.js).

A continuación se muestra la ruta correspondiente (en routes.js):

La ruta anterior sirve la llamada desde el lado del cliente jQuery y también devuelve una respuesta HTTP de 200 y un cuerpo de respuesta JSON.

La ruta hace una llamada al getByDocumentId expuesta por ImageModel. Esta función, como se muestra a continuación, recupera un documento del bucket de Couchbase basándose en el id del documento pasado como argumento. Una vez que el documento es recuperado con éxito, el resultado es analizado y la función "me gusta" se incrementa en 1. El documento actualizado se guarda llamando a la función save().

La función getByDocumentId (definida en el archivo recordmodel.js):

 

Mostrar imágenes por nombre de etiqueta

Para listar imágenes por una etiqueta concreta, tenemos que hacer lo siguiente:

  • Pasar el tagname cuando se hace clic en el ancla
  • Utilice el nombre de etiqueta para filtrar las imágenes

El tagname es pasado por el siguiente simple jQquery:

Y la ruta correspondiente:

En getImagesByTag se describe a continuación:

Simplemente ejecuta la siguiente consulta utilizando N1QL:

select nombrefichero, gustos from galeriafotos where IN etiquetas;

Esto permite filtrar en base a tagname donde tags es un array de cadenas.

pasted image 0 3

Por lo tanto, si tenemos dos imágenes con la misma etiqueta, la consulta anterior debería devolver ambas imágenes.

pasted image 0 1

En este caso, ambos documentos tienen una etiqueta común denominada "Blossom". Ahora, si ejecutamos la consulta utilizando el Couchbase Query Workbench, obtendremos el siguiente resultado:

pasted image 0 5

Como era de esperar, se devuelven dos registros. Esto es, en efecto, lo que ocurre en el método getImagesByTag () función.

Solución de problemas

Durante npm-install, si te encuentras con el siguiente error,

No se puede encontrar el ejecutable de Python "python", puede establecer la variable env PYTHON

haga lo siguiente para eliminar el error:

Instalar python

Añadir python a la ruta

Esto debería resolver el error ... al menos lo hizo para mí.

 

Este post forma parte del Programa de Escritura de la Comunidad Couchbase

Autor

Publicado por Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

Dejar una respuesta