Si eres un desarrollador de JavaScript que transición a usar Node.js, querrás aprovechar las funciones async.
Eso es porque las llamadas asíncronas a la API no bloquean tu código y devuelven promesas. En este post, te mostraré cómo crear funciones asíncronas en Node.js que llamen al SDK de Couchbase.
Resumen rápido: Configuración de un proyecto Node.js con Couchbase
Este post continúa mi serie introductoria sobre usando Node.js con Couchbase.
Un existente Couchbase base de datos (con viaje-muestra
Cubo activado) y Node.js para este tutorial, pero para más detalles ver el post de la semana pasada sobre cómo empezar con el SDK de Node.js para Couchbase.
Para ponerte al día, primero instalar el SDK de Couchbase Node.js utilizando el npm
junto con el comando guardar
para almacenar la dependencia en su paquete.json
archivo de configuración. Esto es lo que parece:
1 2 3 |
cd cb-nodo2 npm init -y npm instale couchbase --guardar |
Ahora estás listo para sumergirte en el siguiente paso.
Conectar a Couchbase con una función asíncrona
Conexión a Couchbase mediante JavaScript async
requiere que importe la biblioteca además de otros tres componentes:
-
- Nombre/dirección del servidor
- Nombre de usuario/contraseña
- El cubo al que conectarse
Envuélvalo todo con un async
y crear la función grupo
objeto.
1 2 3 4 5 6 7 |
const couchbase = requiere("couchbase") async función principal(){ const grupo = nuevo couchbase.Grupo("couchbase://localhost", { nombre de usuario: "Administrador", contraseña: "Administrador" }); |
Una vez proporcionada la información de conexión principal, seleccione el Bucket y cualquier Scope o Collection específicos (en este ejemplo he utilizado la Collection por defecto). El resultado Colección
se utiliza para las siguientes llamadas a la base de datos.
1 2 |
const cubo = grupo.cubo("viaje-muestra"); const colección = cubo.defaultCollection(); |
Obtener un documento JSON
Ahora que ya tienes una función async configurada, vamos a aprender cómo puedes consiga
a Documento JSON de Couchbase.
Para realizar una operación clave-valor básica, es necesario conocer el ID de un documento existente. Para este ejemplo, vamos a utilizar el ID de Chalets Marmotte Mountain Adventure en Francia: hotel_5336
.
La base consiga
que se muestra en entrada anterior del blog también - es:
1 |
colección.consiga(clave) |
Para hacerlo asíncrono, utilice el método await
dentro de un async
función. Llamaremos a esta función después con el ID de nuestro hotel. También es una buena costumbre empezar a capturar e imprimir cualquier error.
1 2 3 4 5 6 7 8 9 |
const getHotel = async (clave) => { pruebe { const resultado = await colección.consiga(clave); consola.registro("Resultado:"); consola.registro(resultado); } captura (error) { consola.error(error); } }; |
Llama a tu nueva función al final del script. Recuerde, todo el script debe estar dentro del archivo main()
a la que se llama:
1 2 3 4 5 |
... await getHotel("hotel_5336"); } principal(); |
Luego prueba tu función async ejecutándola y viendo la salida para ese documento en particular:
1 2 3 4 5 6 7 8 9 |
$ nodo aplicación.js Resultado: ObtenerResultado { contenido: { título: Chamonix, nombre: Chalets Marmotte Aventura en la montaña, dirección: '31 chemin des Rambles, Argentiere', direcciones: null, teléfono: '+33682891523', |
Cómo insertar un documento JSON
A continuación, veremos cómo upsert
un documento JSON utilizando su función async.
Utilizando tu script original, puedes añadir la posibilidad de crear un nuevo documento y luego solicitarlo de vuelta - para mostrar el viaje de ida y vuelta completo. Para guardar o añadir un documento en la base de datos, utilice la función upsert
y pásale un objeto JSON.
Recuerda que puedes mantener la conexión y consiga
y crear una nueva función para upsert
.
En primer lugar, cree el nuevoHotel
. Como se puede ver a continuación, lo configuramos para tomar la clave/ID y un objeto JSON.
1 2 3 4 5 6 7 8 9 |
const nuevoHotel = async (clave,jsondoc) => { pruebe { const upresult = await colección.upsert(clave, jsondoc); consola.registro("Insertar resultado:"); consola.registro(upresult); } captura (error){ consola.error(error); } }; |
A continuación, creamos el documento JSON que enviaremos a la base de datos Couchbase.
1 2 3 4 5 6 |
jsondoc = { "tipo": "hotel", "id": 3, "nombre": "Le Grande", "ciudad": "París, Francia" } |
Llamaremos a la nueva entrada del hotel hotel_3
al llamar a la nueva función:
1 |
await nuevoHotel("hotel_3", jsondoc); |
Si pones todo este código antes del getHotel
puede ajustar el ID del documento para el consiga
para comprobar que se ha guardado el nuevo hotel.
Aquí está el resultado de crear el documento y luego obtener el mismo de vuelta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ nodo aplicación.js Upsert resultado: MutationResult { cas: CbCas<1629156064638664704>, ficha: CbMutationToken<771:243978275681931:85:viaje-muestra> } (nodo:3060577) [DEP0079] DeprecationWarning: A medida inspección función en Objetos vía .inspeccionar() es obsoleto Resultado: ObtenerResultado { contenido: { tipo: hotel, id: 3, nombre: Le Grande, ciudad: París, Francia }, cas: CbCas<1629156064638664704>, expiryTime: indefinido } |
Ejemplo de código completo
Aquí está todo el código de ejemplo del post de hoy:
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 43 44 45 46 47 |
const couchbase = requiere("couchbase") async función principal(){ const grupo = nuevo couchbase.Grupo("couchbase://localhost", { nombre de usuario: "Administrador", contraseña: "Administrador" }); const cubo = grupo.cubo("viaje-muestra"); const colección = cubo.defaultCollection(); const getHotel = async (clave) => { pruebe { const resultado = await colección.consiga(clave); consola.registro("\nResultado:"); consola.registro(resultado); } captura (error){ consola.error(error); } }; const nuevoHotel = async (clave,jsondoc) => { pruebe { const upresult = await colección.upsert(clave, jsondoc); consola.registro("Insertar resultado:"); consola.registro(upresult); } captura (error){ consola.error(error); } }; jsondoc = { "tipo": "hotel", "id": 3, "nombre": "Le Grande", "ciudad": "París, Francia" } await nuevoHotel("hotel_3", jsondoc); await getHotel("hotel_3"); } principal(); |
Conclusión
Enhorabuena por hacer un upsert
y consiga
¡en Node.js! Ahora estás listo para construir una aplicación más complicada - que voy a cubrir en futuras entradas del blog.
Para obtener una guía para desarrolladores más detallada, consulte la página Documentación del SDK de Couchbase Node.js aquí.
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
Pruebe Couchbase Cloud hoy mismo