Si eres nuevo en Node.js, Couchbase o ambos, estás a punto de subir de nivel.
Hoy te mostraré cómo construir una aplicación mínima basada en REST para recuperar documentos de Couchbase usando Node.js y Express.
Este post continúa mi serie introductoria sobre usando Node.js con Couchbase (incluyendo el post de la semana pasada sobre funciones asíncronas).
En el post de hoy, nos basaremos en mis ejemplos anteriores de uso de Node.js y Couchbaseasí que echa un vistazo a esos dos artículos anteriores si aún no lo has hecho. También voy a suponer que usted tiene familiaridad básica con JavaScript, Node.js y bases de datos de documentos NoSQL.
Obtener el módulo exprés
Empezando por donde lo dejamos la semana pasada, podemos añadir una interfaz REST basada en web para ayudar a aislar tu aplicación web de la base de datos. Para ello, necesitas el módulo Express. Instálalo y añádelo a las dependencias de tu paquete usando:
1 |
npm instale express --guardar |
Para comprobar que Express se ha instalado correctamente, puede crear una pequeña aplicación (app.js
) que crea el servidor HTTP y devuelve un archivo Hola Mundo
valor. Para mayor comodidad, envuélvalo con un async
como puede ver a continuación:
1 2 3 4 5 6 7 8 9 |
var aplicación = requiere(exprés)(); const couchbase = requiere("couchbase"); async función principal(){ aplicación.consiga('/', (consulte, res) => res.enviar("¡Hola mundo!)); aplicación.escuche(3000, () => consola.registro(Escuchando en el puerto 3000)); } principal(); |
Ejecútelo y acceda a él a través de un navegador web en el puerto 3000. Debería verse algo parecido a esta imagen de abajo:
1 |
nodo aplicación.js |
Enhorabuena. Has creado con éxito tu primera aplicación Express, aunque sea pequeña.
Creación de la aplicación
La aplicación tiene tres componentes:
-
- Gestión de rutas
- Conectividad de bases de datos
- La capa del servidor HTTP
Añadir una ruta exprés para la recuperación de datos
La aplicación intercepta y sirve la ruta raíz /
. Crearemos una ruta llamada consiga
para recuperar un documento específico. El usuario REST proporciona un ID de documento y devuelve el documento JSON utilizando la siguiente sintaxis:
1 |
localhost:3000/consiga/[documentID] |
La función para crear esa ruta incluye dos objetos importantes - consulte
(solicitud) y res
(resultados) - que utilizaremos para obtener datos hacia y desde la aplicación. Véase el ejemplo siguiente:
1 2 3 4 5 6 7 |
aplicación.consiga('/get/:docid', runAsync(async (consulte, res) => { var docid = consulte.parámetros.docid; var docjson = await getDoc(docid, función(err, resultado){ res.json(resultado.contenido) }); })); |
Obsérvese que el :docid
se convierte en una variable a la que se puede acceder a través del objeto de solicitud: var docid = req.params.docid
. A continuación, se pasa al getDoc()
que veremos dentro de un minuto.
La aplicación también tiene esta función de conveniencia a continuación para ejecutar todo de forma asíncrona:
1 2 3 4 5 6 |
función runAsync (devolución de llamada) { devolver función (consulte, res, siguiente) { devolución de llamada(consulte, res, siguiente) .captura(siguiente) } } |
La función de arriba envuelve sus llamadas muy bien, pero no voy a explicar en detalle aquí (tal vez en un futuro post). Por ahora, sólo tiene que añadir a la secuencia de comandos.
Añadir una función de recuperación de documentos
La conectividad de la base de datos en el script es tan básica como en las entradas anteriores de esta serie. Seleccione una Cubo y recogidautilice el botón get()
para recuperar un documento basado en un ID de documento dado.
Primero viene la parte de la conectividad. Si tienes otro nombre de usuario, contraseña, cubo o colección, sustitúyelo aquí:
1 2 3 4 5 6 7 |
var grupo = nuevo couchbase.Grupo("couchbase://localhost", { nombre de usuario: "Administrador", contraseña: "Administrador" }); var cubo = grupo.cubo("viaje-muestra"); var colección = cubo.defaultCollection(); |
Tenga en cuenta que alojo la aplicación en un servidor de mi red que también aloja la base de datos (localhost
). Pero yo accedo a la aplicación desde mi portátil de desarrollo, por lo que en las muestras del navegador web a continuación verá la dirección IP 192.168.0.158
a la API REST.
Veamos ahora la función principal de recuperación de documentos:
1 2 3 4 5 |
var getDoc = async (clave) => { var resultado = await colección.consiga(clave); consola.registro(resultado) devolver resultado }; |
Utilizamos el colección
que es la conexión de la base de datos Couchbase al Bucket, etc., definido anteriormente. La variable get()
toma una entrada: una cadena con un ID de documento. Por ejemplo, utilizamos hotel_5336
en las entradas anteriores de esta serie.
Ejecutar la API REST
El servidor HTTP para la API REST también debe ejecutarse. No ha cambiado desde la primera aplicación de prueba en este post:
1 |
aplicación.escuche(3000, () => consola.registro(Escuchando en el puerto 3000)); |
Eso cubre todo el código; a continuación se incluye una lista completa. Ahora puede ejecutar el servidor como antes ( node app.js
) y proporcionar un ID de documento a través del navegador web - p. ej, http://192.168.0.158:3000/get/hotel_5336
.
El documento solicitado se imprime en la consola y se devuelve al navegador:
Ejemplo de código completo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
var aplicación = requiere(exprés)(); var couchbase = requiere("couchbase"); async función principal(){ aplicación.consiga('/get/:docid', runAsync(async (consulte, res) => { var docid = consulte.parámetros.docid; var docjson = await getDoc(docid, función(err, resultado){ res.json(resultado.contenido) }); res.json(docjson.contenido); })); aplicación.escuche(3000, () => consola.registro(Escuchando en el puerto 3000)); función runAsync (devolución de llamada) { devolver función (consulte, res, siguiente) { devolución de llamada(consulte, res, siguiente) .captura(siguiente) } } var grupo = nuevo couchbase.Grupo("couchbase://localhost", { nombre de usuario: "Administrador", contraseña: "Administrador" }); var cubo = grupo.cubo("viaje-muestra"); var colección = cubo.defaultCollection(); var getDoc = async (clave) => { var resultado = await colección.consiga(clave); consola.registro(resultado) devolver resultado }; } principal(); |
Conclusión
En próximas entradas explicaré cómo crear una consulta a una base de datos, realizar búsquedas de texto completo y mucho más, todo ello utilizando diferentes rutas Express.
Mientras tanto, lleve su solicitud al siguiente nivel haciendo algunas de las siguientes cosas:
-
- Añadir captura de errores.
- Cree un sistema de autenticación, como JSON Web Token o JWT (consulte este proyecto de demostración de muestras de viajes).
- Más información otras funciones del SDK de Couchbase Node.js que puedes añadir a la aplicación.
Póngase al día con el resto de la serie Node.js + Couchbase how-to:
-
- Cómo empezar con el SDK de Node.js para Couchbase
- Cómo crear llamadas asíncronas Get/Upsert con Node.js y Couchbase
- Construir una aplicación basada en REST con Node.js, Express y Couchbase
- Cómo consultar datos JSON con N1QL para Node.js y Couchbase
- Cómo añadir la función de búsqueda de texto completo a su aplicación JavaScript
Descargar Couchbase y empezar a construir
[...] post Construye una aplicación basada en REST con Node.js, Express y Couchbase appeared first on The Couchbase [...]