Saltar al contenido

Tutorial de apuestas de Node.js

En tutoriales anteriores, habría visto funciones de recuperación utilizadas para eventos asincrónicos. Pero a veces las funciones de recuperación pueden ser nocturnas cuando comienzan a anidarse y el programa comienza a ser largo y complicado.

En este tutorial, aprenderá:

¿Qué son las promesas?

Antes de comenzar con las promesas, revisemos primero las funciones de «recuperación» en Node.js. Hemos visto muchas funciones de recuperación en los capítulos anteriores, así que repasemos una de ellas rápidamente.

El siguiente ejemplo muestra un fragmento de código, que se utiliza para conectarse a MongoDB base de datos y realice una operación de actualización en uno de los registros de la base de datos.

  1. El código anterior proporciona una declaración de una función anónima o una recuperación de la parte de la función (err, db). Cuando MongoClient crea una conexión a la base de datos MongoDB, volverá a la función de devolución de llamada cuando se complete la operación de conexión. Entonces, de alguna manera, las operaciones de conexión se llevan a cabo en segundo plano, y cuando se terminan, llama a nuestra función de recuperación. Recuerde que este es uno de los puntos clave de Node.js para permitir que muchas operaciones ocurran simultáneamente para no evitar que ningún usuario realice una operación.

  2. El segundo bloque de código es lo que se hace cuando se da realmente la función de recuperación. La función de recuperación solo actualiza un registro en nuestra base de datos MongoDB.

Entonces, ¿qué es una promesa entonces? Bueno, la promesa es solo una mejora de las funciones de recuperación en Node.js. Durante la vida del desarrollo, puede haber una situación en la que necesite integrar varias funciones de recuperación juntas. Esto puede resultar amenazador y difícil de mantener en algún momento. En resumen, es una promesa de devolución de llamada mejorada que busca aliviar estos problemas.

La proporción básica del compromiso se muestra a continuación;

var promise = doSomethingAync()
promise.then(onFulfilled, onRejected)
  • «DoSomethingAync» es cualquier recuperación o función asincrónica que realiza alguna forma de procesamiento.
  • Esta vez, al definir el retiro, hay un valor de retorno llamado «promesa».
  • Cuando se devuelve una prenda, puede tener 2 salidas. Esto está definido por la ‘cláusula entonces’. La operación indicada por el parámetro ‘Cumplimiento’ puede tener éxito. Alternativamente, puede haber un error con el parámetro ‘onRejected’.

Nota: Entonces, el elemento central de la promesa es el valor de retorno. No existe un concepto de valor de salida cuando se trabaja con registros de llamadas normales en Node.js. Debido al valor de retorno, tenemos más control sobre cómo se puede definir la función de recuperación.

En el siguiente tema, veremos un ejemplo de promesas y cómo se benefician de las devoluciones de llamadas.

Llama a promesas

Ahora veamos un ejemplo de cómo podemos usar «promesas» dentro de la aplicación Node.js. Para usar promesas en la aplicación Node.js., primero se debe descargar e instalar el módulo ‘promesas’.

Luego, modificaremos nuestro código como se muestra a continuación, que actualiza un Nombre de empleado en la colección ‘Empleado’ mediante promesas.

Paso 1) Instale los módulos NPM

Para usar Pledges dentro de la aplicación JS Node, se requiere el módulo Pledge. Para instalar el módulo de compromiso, ejecute el siguiente comando

prometo instalar npm

Paso 2) Cambiar el código para incluir promesas

var Promise = require('promise');
var MongoClient = require('mongodb').MongoClient;
var url="mongodb://localhost/EmployeeDB";

MongoClient.connect(url)
    .then(function(err, db) {
        db.collection('Employee').updateOne({
            "EmployeeName": "Martin"
        }, {
            $set: {
                "EmployeeName": "Mohan"
            }
        });
    }); 

Explicación del Código: –

  1. La primera parte es incluir el módulo ‘compromiso’ que nos permitirá usar la funcionalidad de compromiso en nuestro código.
  2. Podemos adjuntar la función ‘entonces’ a nuestra función MongoClient.connect. Entonces, lo que hace es que una vez que se establece la conexión a la base de datos, debemos ejecutar el fragmento de código que se define posteriormente.
  3. Finalmente, definimos nuestro fragmento de código que hace el trabajo de actualizar el nombre del empleado del empleado con el nombre «Martin» a «Mohan».

Nota: –

Si comprueba el contenido de su base de datos MongoDB ahora, encontrará que si hay un registro EmployeeName de «Martin», se actualizará a «Mohan».

Para comprobar que los datos se han introducido correctamente en la base de datos, debe ejecutar los siguientes comandos en MongoDB

  1. Utilice EmployeeDB
  2. db.Employee.find ({EmployeeName: Mohan})

La primera declaración asegura que está conectado a la base de datos EmployeeDb. La segunda declaración busca en el registro que lleva el nombre del empleado «Mohan».

Hacer frente a las promesas incrustadas

Al definir las promesas, debe tenerse en cuenta que el método «entonces» en sí mismo devuelve una promesa. Entonces, de alguna manera, las promesas se pueden incrustar o encadenar.

En el siguiente ejemplo, usamos el encadenamiento para definir 2 funciones de recuperación, las cuales ingresan un registro en la base de datos de MongoDB.

(Nota: Cadena es un concepto utilizado para vincular la ejecución de métodos. Suponga que su aplicación tiene dos métodos llamados ‘métodoA’ y ‘métodoB’. Y la lógica era tan buena que ‘métodoA’ debería llamarse después de ‘métodoA’, luego encadenaría la ejecución para que ‘métodoB’ se llamara inmediatamente después de ‘métodoA’)

Lo más importante a tener en cuenta en este ejemplo es que el código se volverá más limpio, legible y viable mediante el uso de promesas integradas.

var Promise = require('promise');
var MongoClient = require('mongodb').MongoClient;
var url="mongodb://localhost/EmployeeDB";
MongoClient.connect(url)

.then(function(db) {
    db.collection('Employee').insertOne({
        Employeeid: 4,
        EmployeeName: "NewEmployee"
    })

    .then(function(db1) {
        db1.collection('Employee').insertOne({
            Employeeid: 5,
            EmployeeName: "NewEmployee1"
        })
    })
});

Explicación del Código: –

  1. Ahora estamos definiendo 2 cláusulas «entonces» que se ejecutan una tras otra. Entonces, en la primera cláusula, revisamos el parámetro ‘db’ que contiene nuestra conexión a la base de datos. Luego usamos la propiedad de colección de conexión ‘db’ para insertar registros en la colección ‘Empleado’. El método ‘insertOne’ se utiliza para insertar el documento real en la colección Employee.
  2. Estamos usando el 2 entoncesDakota del Norte luego también una cláusula para agregar otro registro a la base de datos.

Si verifica el contenido de su base de datos MongoDB ahora, encontrará los 2 registros ingresados ​​en la base de datos MongoDB.

Crea una promesa personalizada

Se puede crear un compromiso personalizado a través de un módulo de nodo llamado ‘q’. La biblioteca ‘q’ debe descargarse e instalarse mediante el administrador de paquetes de nodos. Después de usar la biblioteca ‘q’, puede llamar al método «denominar» que dará como resultado que cualquier función sea una función de retorno.

En el siguiente ejemplo, crearemos una función simple llamada «Agregar» que agregará 2 números. Convertiremos esta función en una función para devolver una promesa.

Una vez hecho esto, usaremos el compromiso devuelto por la función Agregar para mostrar un mensaje en el archivo console.log.

Sigamos los pasos a continuación para crear nuestra función personalizada para devolver una promesa.

Paso 1) Instale los módulos NPM

Para usar ‘q’ dentro de la aplicación JS Node, se requiere el módulo ‘q’. Para instalar el módulo ‘q’, ejecute el siguiente comando

instalar npm q

Paso 2) Defina el siguiente código que se utilizará para crear el compromiso personalizado.

Explicación del Código: –

  1. El primer bit es incluir la biblioteca ‘q’ usando la palabra clave requerida. Al usar esta biblioteca, podremos definir cualquier función para restaurar una recuperación.
  2. Estamos creando una función llamada Agregar que agregará 2 números definidos en las variables ay b. La suma de estos valores se almacenará en una variable c.
  3. Luego usamos la biblioteca q para expresar nuestra función Add (el método utilizado para convertir cualquier función en una función que devuelve una promesa) o para convertir nuestra función Add en una función que devuelve una promesa.
  4. Ahora llamamos a nuestra función «Agregar» y podemos obtener el valor de la promesa de devolución debido al paso avanzado que dimos para comunicar la función Agregar.
  5. Utilice la palabra clave ‘luego’ para especificar si la función se realiza correctamente y luego muestre la cadena «Función de adición finalizada» en el archivo console.log.

Cuando se pasa el código anterior, la salida de «Función de adición finalizada» se mostrará en el archivo console.log como se muestra a continuación.

Resumen