GoLang

Manejar errores de modelado de datos en una aplicación Golang con Couchbase

He estado desarrollando con Couchbase y el Go SDK desde hace un tiempo, pero recientemente me encontré con un problema que consideré un error en el SDK después de horas de solución de problemas. Estaba tratando de ejecutar una consulta N1QL que sabía a ciencia cierta que tenía resultados. El problema era que no veía ninguno de esos resultados dentro de la aplicación Go.

Después de aclarar las cosas con el ingeniero del SDK de Go, no se trataba de un bug, sino de errores del usuario. Qué vergüenza, ¿verdad?

Vamos a ver lo que estaba haciendo mal y los pasos que se utilizaron para corregir el problema.

En mi aplicación Go tenía varias estructuras de datos que debían modelarse a partir de los datos que almacenaba en Couchbase. Una de esas estructuras de datos tenía el siguiente aspecto:

La anterior es una estructura de datos muy simple que representa un modelo de documento muy sencillo.

Para consultar todos Blog en mi Couchbase Bucket, estaba ejecutando el siguiente código:

Al ejecutar mi aplicación, no se imprimía ningún resultado aunque pude validar en otra parte que mi consulta era correcta. La dirección Siguiente siempre devolvía false.

El siguiente paso lógico era asegurarse de que Couchbase estaba recibiendo la petición correctamente desde la aplicación Go SDK. Esto se verificó a través de la monitorización de los logs de Couchbase. Los registros habían indicado que todo cuadraba.

Entonces cambié un poco mi código:

En lugar de utilizar el Siguiente utilicé la función .uno función. Uno de los resultados fue la impresión, sin embargo, no me di cuenta de que era una impresión parcial.

Tras hablar con Brett Lawson, el ingeniero del SDK de Go, llegó a la conclusión de que estaba recibiendo errores que hacían que los resultados fallaran.

Pero espera un segundo. ¿No imprime lo siguiente mis errores?:

El código anterior imprimía errores con la ejecución de la consulta. En realidad tenía errores en otra parte, después de que la consulta se hubiera ejecutado y hubiera recibido resultados.

Brett me recomendó que cambiara mi código por el siguiente:

Observe que estoy imprimiendo el error en el Cerrar función esta vez.

Resulta que había errores. El problema era que mis resultados no se asignaban correctamente a mi estructura de datos. Más específicamente, yo estaba teniendo un problema con el Marca de tiempo propiedad.

Estaba guardando el Marca de tiempo como int64 datos, pero intentaba leerlo como si fuera int. Este pequeño detalle estaba causando un error que yo no detectaba, lo que me llevó a pensar que mis resultados estaban vacíos y que había un error en el SDK de Go.

Conclusión

La moraleja de esta historia es que si una función Go devuelve un error, definitivamente aprovecha la información y haz algo con ella. No omitas el error de tu código y procedas como si no existiera. Podría costarte horas de frustración en el futuro.

Para ver mi bochornoso ticket de incidencia y la resolución adecuada, echa un vistazo al rastreador de Jira aquí.

Para obtener más información sobre el uso del SDK Go con Couchbase, consulte la página Portal para desarrolladores de Couchbase.

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.