1
00:00:03,980 --> 00:00:08,700
Acabamos de aprender sobre Callback Hell y

2
00:00:08,700 --> 00:00:13,455
cómo las promesas pueden permitirnos superar este problema.

3
00:00:13,455 --> 00:00:19,575
Sabemos que el controlador de nodo MongoDB admite promesas de forma nativa.

4
00:00:19,575 --> 00:00:22,485
Por lo tanto, si no especifica una devolución de llamada,

5
00:00:22,485 --> 00:00:26,385
las llamadas a sus funciones devolverán promesas.

6
00:00:26,385 --> 00:00:31,445
Por lo tanto, vamos a actualizar nuestra aplicación para hacer uso de promesas para

7
00:00:31,445 --> 00:00:38,005
evitar el problema del infierno de devolución de llamada que acabamos de aprender en la conferencia anterior.

8
00:00:38,005 --> 00:00:40,644
Volviendo a nuestra aplicación,

9
00:00:40,644 --> 00:00:48,035
nuevamente echando un vistazo a la razón por la que el infierno de devolución de llamada se ha desarrollado en nuestro código.

10
00:00:48,035 --> 00:00:52,520
Tenga en cuenta que aquí cuando

11
00:00:52,520 --> 00:00:56,899
implementamos las operaciones, tenemos una operación y luego dentro de la devolución de llamada de esa operación,

12
00:00:56,899 --> 00:01:00,770
entonces necesitamos iniciar la siguiente operación y dentro de

13
00:01:00,770 --> 00:01:04,910
la devolución de llamada de esa operación estamos iniciando la siguiente operación y así sucesivamente.

14
00:01:04,910 --> 00:01:10,040
Así que estás terminando con esta pirámide como estructura aquí.

15
00:01:10,040 --> 00:01:14,290
Una operación dentro de la devolución de llamada de otra y dentro de la devolución de llamada.

16
00:01:14,290 --> 00:01:21,240
Ahora, este código pronto será difícil de manejar y complicado de entender.

17
00:01:21,240 --> 00:01:24,760
Es por eso que queremos transformar este código usando

18
00:01:24,760 --> 00:01:29,380
el soporte prometido que Mongo DB Driver ya

19
00:01:29,380 --> 00:01:33,205
nos proporciona para que podamos usar promesas en lugar de

20
00:01:33,205 --> 00:01:37,735
usar las funciones de devolución de llamada como hicimos en este ejercicio.

21
00:01:37,735 --> 00:01:42,760
Por supuesto, hice la versión anterior solo para ilustrarte cómo podemos

22
00:01:42,760 --> 00:01:48,595
aterrizar con el infierno de devolución de llamada y cómo podemos usar promesas para superar este problema.

23
00:01:48,595 --> 00:01:53,560
Entonces, antes de actualizar el archivo index.js,

24
00:01:53,560 --> 00:01:59,989
permítanme entrar en el archivo operations.jsfile y luego actualizaremos esto primero.

25
00:01:59,989 --> 00:02:06,950
Así que aquí, notará que cuando llamemos a esta función aquí,

26
00:02:06,950 --> 00:02:14,630
estamos pasando el segundo parámetro que es una función de devolución de llamada aquí.

27
00:02:14,630 --> 00:02:18,210
Entonces, porque vamos a usar promesas aquí.

28
00:02:18,210 --> 00:02:21,545
Así que solo voy a eliminar esa función de devolución de llamada y luego

29
00:02:21,545 --> 00:02:25,744
dado que esta llamada a la inserción de todos modos devolverá promesas,

30
00:02:25,744 --> 00:02:29,710
solo voy a devolver la promesa de esta función.

31
00:02:29,710 --> 00:02:33,605
Así que tenga en cuenta cómo se simplificó el código.

32
00:02:33,605 --> 00:02:36,090
Del mismo modo, para el segundo,

33
00:02:36,090 --> 00:02:42,740
simplemente eliminaré esta función de devolución de llamada y

34
00:02:42,740 --> 00:02:47,900
luego devolveré la promesa que está

35
00:02:47,900 --> 00:02:55,580
siendo devuelta por esto y luego lo manejaremos en el código en index.js.

36
00:02:55,580 --> 00:02:58,495
Del mismo modo, para la eliminación también,

37
00:02:58,495 --> 00:03:08,280
voy a eliminar la devolución de llamada y luego devolver ese bloqueo y también para uptade.

38
00:03:10,600 --> 00:03:16,730
Para actualizar, vamos a eliminar la devolución de llamada que hemos dado

39
00:03:16,730 --> 00:03:22,564
aquí y luego devolver la promesa.

40
00:03:22,564 --> 00:03:25,100
Así que de esta manera todas estas cuatro funciones van

41
00:03:25,100 --> 00:03:27,575
a devolver la promesa que ya ha sido devuelta

42
00:03:27,575 --> 00:03:33,110
por estas llamadas a las funciones del controlador MongoDB.

43
00:03:33,110 --> 00:03:34,760
Ahora, una vez que hayamos completado eso,

44
00:03:34,760 --> 00:03:38,210
volvamos a index.js.

45
00:03:38,210 --> 00:03:44,090
En index.js, volveré a actualizar esta función aquí.

46
00:03:44,090 --> 00:03:53,105
Entonces, el uso de promesas dirá MongoClient.connect (url) y luego

47
00:03:53,105 --> 00:04:03,470
reemplazaremos esto diciendo «entonces» y esto solo recibe el db como su parámetro.

48
00:04:03,470 --> 00:04:10,390
Y dentro de aquí, vamos a manejar el resto y también podemos

49
00:04:10,390 --> 00:04:18,350
hacer notar que esta función particular cierra el «Entonces» aquí y la promesa,

50
00:04:18,350 --> 00:04:20,505
la segunda parte de la promesa,

51
00:04:20,505 --> 00:04:22,845
podemos manejar el error.

52
00:04:22,845 --> 00:04:28,055
Podemos decir consolelog.

53
00:04:28,055 --> 00:04:33,755
Así que podemos usar la captura de la promesa también para detectar los errores.

54
00:04:33,755 --> 00:04:36,275
Así que de esa manera, hemos detectado los errores.

55
00:04:36,275 --> 00:04:39,815
Ahora, vamos a mejorar el código aquí dentro.

56
00:04:39,815 --> 00:04:45,530
Así que dentro de aquí estamos haciendo el documento de inserción de la operación de base

57
00:04:45,530 --> 00:04:49,685
de datos, y en lugar de llamar a esta función aquí,

58
00:04:49,685 --> 00:04:59,115
lo que voy a hacer es convertir esto en el «entonces» aquí.

59
00:04:59,115 --> 00:05:06,870
Así que voy a cerrar esto y decir.entonces resultado.

60
00:05:06,870 --> 00:05:08,800
Así que dentro de esos resultados,

61
00:05:08,800 --> 00:05:11,600
vamos a imprimir el registro de la consola y luego.

62
00:05:11,600 --> 00:05:20,630
Así que voy a cerrar esto aquí y luego vamos a

63
00:05:20,630 --> 00:05:25,505
cerrar el «entonces» aquí y luego

64
00:05:25,505 --> 00:05:31,950
esto se adjuntará a otra vez un «entonces» aquí.

65
00:05:32,600 --> 00:05:36,640
Así que ves que estoy encadenando dos «entonces»

66
00:05:36,640 --> 00:05:40,070
uno al otro aquí y luego dentro de nosotros luego,

67
00:05:40,070 --> 00:05:47,570
haremos un registro de consola y luego haremos un retorno de la siguiente operación.

68
00:05:47,570 --> 00:05:51,390
Pero luego, para esta operación,

69
00:05:52,540 --> 00:06:02,070
voy a cerrar esto y cerrar esto

70
00:06:02,070 --> 00:06:06,920
entonces y luego esta llamada nuevamente ahora

71
00:06:06,920 --> 00:06:13,320
se manejará dentro de una función de «entonces» aquí.

72
00:06:13,460 --> 00:06:20,510
Así que tenga en cuenta cómo tiene la primera función y en el «entonces» estamos llamando a

73
00:06:20,510 --> 00:06:27,870
los documentos de búsqueda dboper y eso regresará y esto devolverá una promesa.

74
00:06:27,870 --> 00:06:30,410
Esa promesa será manejada por esto entonces.

75
00:06:30,410 --> 00:06:35,720
Así que estamos encadenando dos entonces juntos y luego otra vez encadenando uno más «entonces» aquí.

76
00:06:35,720 --> 00:06:47,005
Permítanme reinventar el código aquí y luego devolveremos esto aquí y

77
00:06:47,005 --> 00:06:57,610
esto de nuevo cerrará y

78
00:06:57,610 --> 00:07:07,850
cerrará ese «entonces» y luego esto se encierra dentro del siguiente «entonces» y

79
00:07:07,850 --> 00:07:13,280
llamaremos a la siguiente función aquí «que

80
00:07:13,280 --> 00:07:21,130
DB.DropCollection ('Platos' y cierre «esto entonces» y la siguiente aquí.

81
00:07:26,660 --> 00:07:31,390
Vamos a manejar el «entonces» del resultado aquí.

82
00:07:39,650 --> 00:07:48,690
Devolver dbclose y todos

83
00:07:48,690 --> 00:07:56,785
estos aquí ahora se pueden eliminar porque ya no son necesarios.

84
00:07:56,785 --> 00:08:04,520
Y luego, finalmente, si hay un error detectará el error esta función.

85
00:08:04,520 --> 00:08:12,930
Así que voy a copiar esto y luego pegarlo aquí. Eso es todo.

86
00:08:12,930 --> 00:08:14,755
Con este cambio ahora,

87
00:08:14,755 --> 00:08:20,220
su código es mucho más fácil de manejar aquí.

88
00:08:20,220 --> 00:08:21,510
Entonces, como puede ver,

89
00:08:21,510 --> 00:08:24,560
tiene MongoClient.connect que

90
00:08:24,560 --> 00:08:28,040
devuelve una promesa y dentro del manejo de esa promesa,

91
00:08:28,040 --> 00:08:31,700
están llamando a estos métodos y uno tras otro están

92
00:08:31,700 --> 00:08:35,490
devolviendo la promesa y luego los está encadenando usando el.

93
00:08:35,490 --> 00:08:41,635
Esta estructura de acordes es mucho más fácil de seguir que lo que habíamos implementado anteriormente.

94
00:08:41,635 --> 00:08:46,280
Así que usando promesas, literalmente lo hemos dado la vuelta y luego evitado

95
00:08:46,280 --> 00:08:51,250
el infierno de devolución de llamada que vimos en la versión anterior de esta aplicación.

96
00:08:51,250 --> 00:08:53,590
Así que vamos a guardar los cambios tanto en

97
00:08:53,590 --> 00:08:58,715
index.jsn.operation.js y luego echar un vistazo a esta aplicación.

98
00:08:58,715 --> 00:09:00,840
De nuevo yendo a la terminal,

99
00:09:00,840 --> 00:09:03,105
en el mensaje escriba «npm

100
00:09:03,105 --> 00:09:09,515
start» y verá que su aplicación se ejecuta exactamente como antes,

101
00:09:09,515 --> 00:09:12,200
inserta el documento, encuentra el documento,

102
00:09:12,200 --> 00:09:15,080
actualiza el documento y luego encuentra

103
00:09:15,080 --> 00:09:18,530
el documento actualizado y luego cierra la base de datos del acto.

104
00:09:18,530 --> 00:09:23,630
Así que usando promesas hemos reestructurado el código para ser mucho más fácil y

105
00:09:23,630 --> 00:09:29,945
evitado el infierno de devolución de llamada que vimos en la versión anterior de esta aplicación.

106
00:09:29,945 --> 00:09:33,705
Con esto, completamos este ejercicio.

107
00:09:33,705 --> 00:09:36,470
En este ejercicio, usted ha visto cómo podemos hacer uso

108
00:09:36,470 --> 00:09:39,590
de las promesas para evitar el infierno de devolución de llamada.

109
00:09:39,590 --> 00:09:42,920
Este es un buen momento para que hagas una confirmación de git con

110
00:09:42,920 --> 00:09:47,950
el mensaje de devolución de llamada infierno y promesa.