1
00:00:03,980 --> 00:00:08,700
Wir haben gerade etwas über Callback Hell erfahren und

2
00:00:08,700 --> 00:00:13,455
wie Versprechen es uns ermöglichen können, dieses Problem zu überwinden.

3
00:00:13,455 --> 00:00:19,575
Wir wissen, dass der Knoten MongoDB-Treiber nativ Versprechen unterstützt.

4
00:00:19,575 --> 00:00:22,485
Wenn Sie also keinen Callback angeben, geben

5
00:00:22,485 --> 00:00:26,385
die Aufrufe ihrer Funktionen Versprechen zurück.

6
00:00:26,385 --> 00:00:31,445
Also werden wir unsere Anwendung aktualisieren, um die Versprechen zu nutzen, um das

7
00:00:31,445 --> 00:00:38,005
Problem der Rückrufhölle zu vermeiden, das wir gerade in der vorherigen Vorlesung erfahren haben.

8
00:00:38,005 --> 00:00:40,644
Zurück zu unserer Anwendung und

9
00:00:40,644 --> 00:00:48,035
nochmals einen Blick auf den Grund werfen, warum sich die Callback-Hölle in unserem Code entwickelt hat.

10
00:00:48,035 --> 00:00:52,520
Beachten Sie, dass wir hier, wenn

11
00:00:52,520 --> 00:00:56,899
wir die Operationen implementiert haben, eine Operation haben und

12
00:00:56,899 --> 00:01:00,770
dann innerhalb des Rückrufs dieser Operation die nächste Operation initiieren müssen und innerhalb

13
00:01:00,770 --> 00:01:04,910
des Rückrufs dieser Operation starten wir die nächste Operation und so weiter.

14
00:01:04,910 --> 00:01:10,040
Sie sind also am Ende mit dieser pyramidenähnlichen Struktur hier.

15
00:01:10,040 --> 00:01:14,290
Eine Operation innerhalb des Callbacks eines anderen und innerhalb des Callbacks.

16
00:01:14,290 --> 00:01:21,240
Nun, dieser Code wird ziemlich bald unhandlich und kompliziert zu verstehen.

17
00:01:21,240 --> 00:01:24,760
Deshalb möchten wir diesen Code mithilfe

18
00:01:24,760 --> 00:01:29,380
der versprechenden Unterstützung, die Mongo DB Driver bereits

19
00:01:29,380 --> 00:01:33,205
für uns bereitstellt, transformieren, so dass wir stattdessen Versprechen verwenden können,

20
00:01:33,205 --> 00:01:37,735
anstatt die Callback-Funktionen wie in dieser Übung zu verwenden.

21
00:01:37,735 --> 00:01:42,760
Natürlich habe ich die vorherige Version gemacht, nur um Ihnen zu zeigen, wie wir

22
00:01:42,760 --> 00:01:48,595
mit Callback-Hölle landen können und wie wir Versprechungen nutzen können, um dieses Problem zu überwinden.

23
00:01:48,595 --> 00:01:53,560
Also, bevor wir die Datei index.js aktualisieren,

24
00:01:53,560 --> 00:01:59,989
lassen Sie mich in die operations.jsfile gehen und dann werden wir dies zuerst aktualisieren.

25
00:01:59,989 --> 00:02:06,950
Hier werden Sie feststellen, dass, wenn wir diese Funktion hier aufrufen,

26
00:02:06,950 --> 00:02:14,630
wir den zweiten Parameter übergeben, der hier eine Callback-Funktion ist.

27
00:02:14,630 --> 00:02:18,210
Also, weil wir hier Versprechen verwenden werden.

28
00:02:18,210 --> 00:02:21,545
Also werde ich nur diese Callback-Funktion löschen und

29
00:02:21,545 --> 00:02:25,744
da dieser Aufruf des Einfügens sowieso Versprechen zurückgibt,

30
00:02:25,744 --> 00:02:29,710
werde ich nur das Versprechen von dieser Funktion zurückgeben.

31
00:02:29,710 --> 00:02:33,605
Beachten Sie also, wie der Code vereinfacht wurde.

32
00:02:33,605 --> 00:02:36,090
Ähnlich für die zweite

33
00:02:36,090 --> 00:02:42,740
werde ich einfach diese Callback-Funktion entfernen und

34
00:02:42,740 --> 00:02:47,900
dann das Versprechen zurückgeben, das

35
00:02:47,900 --> 00:02:55,580
dadurch zurückgegeben wird, und dann werden wir das im Code in index.js behandeln.

36
00:02:55,580 --> 00:02:58,495
Ähnlich für das Löschen

37
00:02:58,495 --> 00:03:08,280
werde ich auch den Callback entfernen und dann diesen Absturz und auch für Uptade zurückgeben.

38
00:03:10,600 --> 00:03:16,730
Für das Update werden wir den Rückruf entfernen, den wir

39
00:03:16,730 --> 00:03:22,564
hier gegeben haben und dann das Versprechen zurückgeben.

40
00:03:22,564 --> 00:03:25,100
Auf diese Weise

41
00:03:25,100 --> 00:03:27,575
werden all diese vier Funktionen das Versprechen zurückgeben, das bereits

42
00:03:27,575 --> 00:03:33,110
von diesen Aufrufen an die MongoDB-Treiberfunktionen zurückgegeben wird.

43
00:03:33,110 --> 00:03:34,760
Jetzt, wenn wir das abgeschlossen haben,

44
00:03:34,760 --> 00:03:38,210
gehen wir zurück zu index.js.

45
00:03:38,210 --> 00:03:44,090
In index.js werde ich diese Funktion hier erneut aktualisieren. Die

46
00:03:44,090 --> 00:03:53,105
Verwendung von Versprechungen wird also MongoClient.connect (url) sagen und dann

47
00:03:53,105 --> 00:04:03,470
werden wir dies ersetzen, indem wir „dann“ sagen und dies erhält nur die Datenbank als ihren Parameter.

48
00:04:03,470 --> 00:04:10,390
Und hier drinnen werden wir den Rest behandeln und auch

49
00:04:10,390 --> 00:04:18,350
wir können bemerken, dass diese spezielle Funktion das „Dann“ hier und das Versprechen schließt,

50
00:04:18,350 --> 00:04:20,505
den zweiten Teil des Versprechens,

51
00:04:20,505 --> 00:04:22,845
können wir den Fehler behandeln.

52
00:04:22,845 --> 00:04:28,055
Wir können consolelog sagen.

53
00:04:28,055 --> 00:04:33,755
So können wir den Fang des Versprechens auch verwenden, um die Fehler zu fangen.

54
00:04:33,755 --> 00:04:36,275
Auf diese Weise haben wir die Fehler erwischt.

55
00:04:36,275 --> 00:04:39,815
Nun, lassen Sie uns den Code hier verbessern.

56
00:04:39,815 --> 00:04:45,530
Also hier drin machen wir DB-Operation Insert-Dokument,

57
00:04:45,530 --> 00:04:49,685
und anstatt diese Funktion hier aufzurufen,

58
00:04:49,685 --> 00:04:59,115
was ich tun werde, ist dies in das „Dann“ hier zu verwandeln.

59
00:04:59,115 --> 00:05:06,870
Also werde ich das schließen und sagen.dann Ergebnis.

60
00:05:06,870 --> 00:05:08,800
Also innerhalb dieses Ergebnisses

61
00:05:08,800 --> 00:05:11,600
werden wir das Konsolenprotokoll ausdrucken und dann.

62
00:05:11,600 --> 00:05:20,630
Also werde ich das hier abschließen und dann

63
00:05:20,630 --> 00:05:25,505
schließen wir das „Dann“ hier und dann

64
00:05:25,505 --> 00:05:31,950
wird dies wieder ein „Dann“ hier angehängt.

65
00:05:32,600 --> 00:05:36,640
Sie sehen also, dass ich zwei „thens“

66
00:05:36,640 --> 00:05:40,070
eins in das andere hier und dann in uns verkette, dann

67
00:05:40,070 --> 00:05:47,570
machen wir ein Konsolenprotokoll und dann werden wir eine Rückkehr der nächsten Operation machen.

68
00:05:47,570 --> 00:05:51,390
Aber dann, für diese Operation,

69
00:05:52,540 --> 00:06:02,070
werde ich dies schließen und dann schließen,

70
00:06:02,070 --> 00:06:06,920
und dann

71
00:06:06,920 --> 00:06:13,320
wird dieser Rückruf jetzt wieder in einer „dann“ -Funktion behandelt.

72
00:06:13,460 --> 00:06:20,510
Also beachten Sie, wie Sie die erste Funktion haben und in der „dann“ rufen wir

73
00:06:20,510 --> 00:06:27,870
die dboper find Dokumente auf und das wird zurückkehren und dies wird ein Versprechen zurückgeben. Dieses

74
00:06:27,870 --> 00:06:30,410
Versprechen wird dann damit gehandhabt.

75
00:06:30,410 --> 00:06:35,720
Wir verketten also zwei Thens zusammen und verketten dann wieder ein weiteres „dann“ hier.

76
00:06:35,720 --> 00:06:47,005
Lassen Sie mich den Code hier neu erfinden und dann werden wir dies hier zurückgeben und

77
00:06:47,005 --> 00:06:57,610
dies wird wieder schließen und schließen, dass „dann“

78
00:06:57,610 --> 00:07:07,850
und dann wird dies innerhalb des nächsten „dann“ eingeschlossen und wir

79
00:07:07,850 --> 00:07:13,280
werden die nächste Funktion hier aufrufen „, dass

80
00:07:13,280 --> 00:07:21,130
db.DropCollection ('Gerichte' und schließen Sie „das dann“ und die nächste hier.

81
00:07:26,660 --> 00:07:31,390
Wir werden das „Dann“ des Ergebnisses hier behandeln.

82
00:07:39,650 --> 00:07:48,690
Gibt dbclose zurück und all

83
00:07:48,690 --> 00:07:56,785
diese hier können jetzt entfernt werden, da sie nicht mehr benötigt werden.

84
00:07:56,785 --> 00:08:04,520
Und dann, wenn es einen Fehler gibt, wird der Fehler diese Funktion abfangen.

85
00:08:04,520 --> 00:08:12,930
Also werde ich das einfach kopieren und es dann hier einfügen. Das ist es.

86
00:08:12,930 --> 00:08:14,755
Mit dieser Änderung

87
00:08:14,755 --> 00:08:20,220
ist Ihr Code hier viel einfacher zu handhaben.

88
00:08:20,220 --> 00:08:21,510
Wie Sie sehen können,

89
00:08:21,510 --> 00:08:24,560
haben Sie die MongoClient.Connect, die

90
00:08:24,560 --> 00:08:28,040
ein Versprechen zurückgibt und innerhalb der Verarbeitung dieses Versprechens

91
00:08:28,040 --> 00:08:31,700
rufen sie diese Methoden auf und nacheinander geben sie

92
00:08:31,700 --> 00:08:35,490
jeweils das Versprechen zurück und dann verketten Sie sie mit dem.

93
00:08:35,490 --> 00:08:41,635
Diese Akkordstruktur ist viel einfacher zu folgen als das, was wir früher implementiert hatten.

94
00:08:41,635 --> 00:08:46,280
Mit Versprechungen haben wir es buchstäblich umgedreht und dann

95
00:08:46,280 --> 00:08:51,250
die Callback-Hölle vermieden, die wir in der früheren Version dieser Anwendung gesehen haben.

96
00:08:51,250 --> 00:08:53,590
Also lassen Sie uns die Änderungen sowohl in der

97
00:08:53,590 --> 00:08:58,715
index.jsn.operation.js speichern und dann einen Blick auf diese Anwendung werfen.

98
00:08:58,715 --> 00:09:00,840
Gehen Sie wieder zum Terminal,

99
00:09:00,840 --> 00:09:03,105
geben Sie an der Eingabeaufforderung „npm

100
00:09:03,105 --> 00:09:09,515
start“ ein und Sie werden sehen, dass Ihre Anwendung genau wie zuvor läuft,

101
00:09:09,515 --> 00:09:15,080
fügt es das Dokument ein, findet das Dokument,

102
00:09:15,080 --> 00:09:18,530
aktualisiert das Dokument und findet dann das aktualisierte Dokument und schließt dann die Datenbank des Aktes.

103
00:09:18,530 --> 00:09:23,630
Mit Versprechungen haben wir den Code so umstrukturiert, dass er viel einfacher ist und

104
00:09:23,630 --> 00:09:29,945
die Callback-Hölle vermieden wurde, die wir in der vorherigen Version dieser Anwendung gesehen haben.

105
00:09:29,945 --> 00:09:33,705
Damit schließen wir diese Übung ab.

106
00:09:33,705 --> 00:09:36,470
In dieser Übung haben Sie gesehen, wie wir

107
00:09:36,470 --> 00:09:39,590
Versprechen nutzen können, um die Callback-Hölle zu vermeiden.

108
00:09:39,590 --> 00:09:42,920
Dies ist ein guter Zeitpunkt für Sie, ein Git-Commit mit

109
00:09:42,920 --> 00:09:47,950
der Nachricht Callback Hölle und Versprechen zu machen.