﻿1
00:00:01,300 --> 00:00:02,640
‫Kursleiter: Sie haben also

2
00:00:02,640 --> 00:00:05,930
‫bereits gelernt, wie Sie neue Dokumente in der Datenbank erstellen.

3
00:00:05,930 --> 00:00:07,610
‫Aber in diesem

4
00:00:07,610 --> 00:00:10,940
‫Vortrag zeige ich Ihnen einen einfacheren und noch besseren

5
00:00:10,940 --> 00:00:13,933
‫Weg, indem wir unseren create tour handler implementieren.

6
00:00:15,620 --> 00:00:17,620
‫An dieser Stelle macht

7
00:00:17,620 --> 00:00:19,690
‫unsere API im Grunde nichts mehr.

8
00:00:19,690 --> 00:00:21,140
‫Es funktioniert nicht

9
00:00:21,140 --> 00:00:23,850
‫mehr, weil wir im Grunde alle Funktionen gelöscht haben,

10
00:00:23,850 --> 00:00:25,760
‫die wir im letzten Video hatten.

11
00:00:25,760 --> 00:00:28,740
‫Und das haben wir getan, damit wir es

12
00:00:28,740 --> 00:00:32,230
‫in den nächsten Vorlesungen mit einer echten Datenbank nachbauen können.

13
00:00:32,230 --> 00:00:36,810
‫Okay, im Grunde bauen wir also endlich unsere echte API.

14
00:00:36,810 --> 00:00:38,500
‫Und wir beginnen mit der

15
00:00:38,500 --> 00:00:39,957
‫Implementierung der createTour-Funktion.

16
00:00:39,957 --> 00:00:42,260
‫Denken Sie jedoch an die Handler-Funktion,

17
00:00:42,260 --> 00:00:45,300
‫die aufgerufen wird, sobald eine Post-Anfrage an

18
00:00:45,300 --> 00:00:47,420
‫die Tourroute gestellt wird.

19
00:00:47,420 --> 00:00:50,460
‫Das haben wir hier in tourRoutes.

20
00:00:51,300 --> 00:00:53,320
‫Stellen wir das also hier.

21
00:00:53,320 --> 00:00:56,930
‫Also, was ich gerade gesagt habe, ist dies.

22
00:00:56,930 --> 00:00:59,940
‫Also haben wir diesen checkBody hier.

23
00:00:59,940 --> 00:01:01,450
‫Was wir

24
00:01:01,450 --> 00:01:03,663
‫tatsächlich auch löschen können.

25
00:01:04,920 --> 00:01:06,313
‫Also wo ist das eigentlich?

26
00:01:07,583 --> 00:01:09,120
‫checkBody in Ordnung,

27
00:01:09,120 --> 00:01:12,750
‫das ist also noch eine dieser Funktionen, die wir

28
00:01:12,750 --> 00:01:14,290
‫wirklich nicht mehr brauchen.

29
00:01:14,290 --> 00:01:17,180
‫Denn dies diente im Grunde dazu, den Körper zu validieren.

30
00:01:17,180 --> 00:01:22,060
‫Um zu sehen, ob der Name oder die Price-Eigenschaft darin enthalten ist.

31
00:01:22,060 --> 00:01:22,900
‫Rechts?

32
00:01:22,900 --> 00:01:24,690
‫Aber jetzt wird sich

33
00:01:24,690 --> 00:01:26,650
‫eigentlich unser Mungo-Modell darum kümmern.

34
00:01:26,650 --> 00:01:28,830
‫Und so war es auch

35
00:01:28,830 --> 00:01:31,900
‫hier schön, uns zu zeigen, wie Middleware funktioniert,

36
00:01:31,900 --> 00:01:34,143
‫aber jetzt können wir sie loswerden.

37
00:01:35,490 --> 00:01:39,410
‫Okay, also werde ich es auch hier löschen.

38
00:01:39,410 --> 00:01:40,393
‫Geben Sie ihm eine neue Speicherung.

39
00:01:41,474 --> 00:01:43,400
‫Und jetzt funktioniert es wieder.

40
00:01:43,400 --> 00:01:45,660
‫Wie auch immer, die Funktion,

41
00:01:45,660 --> 00:01:48,000
‫die wir jetzt erstellen, ist diese createTour-Funktion.

42
00:01:48,000 --> 00:01:50,050
‫Wo nur die einen

43
00:01:50,050 --> 00:01:54,690
‫Daten aufgerufen werden, sobald jemand mit einer Post-Anfrage die Tourroute trifft.

44
00:01:54,690 --> 00:01:57,030
‫Okay, um das noch einmal zusammenzufassen,

45
00:01:57,030 --> 00:01:59,150
‫weil ich weiß, dass es mit

46
00:01:59,150 --> 00:02:02,190
‫diesen verschiedenen Dateien und verschiedenen Ordnern und verschiedenen Funktionen

47
00:02:02,190 --> 00:02:03,980
‫etwas verwirrend sein kann.

48
00:02:03,980 --> 00:02:05,430
‫Aber es ist auch sehr

49
00:02:05,430 --> 00:02:07,610
‫wichtig, dass wir von Anfang an damit beginnen,

50
00:02:07,610 --> 00:02:08,860
‫unseren Code zu organisieren.

51
00:02:09,940 --> 00:02:10,900
‫Okay?

52
00:02:10,900 --> 00:02:14,710
‫Wie auch immer, wir sind hier in der Funktion createTour.

53
00:02:14,710 --> 00:02:17,200
‫Und so erstellen wir nun tatsächlich eine neue Tour.

54
00:02:17,200 --> 00:02:19,270
‫Und das werden wir basierend auf den Daten

55
00:02:19,270 --> 00:02:21,290
‫tun, die von der Leiche eingehen.

56
00:02:21,290 --> 00:02:22,640
‫Erinnere dich daran?

57
00:02:22,640 --> 00:02:24,980
‫Denken Sie daran, wie wir vor ein paar

58
00:02:24,980 --> 00:02:26,363
‫Vorlesungen Dokumente erstellt haben.

59
00:02:27,470 --> 00:02:29,253
‫Also haben wir es so gemacht.

60
00:02:30,690 --> 00:02:32,487
‫Sagen wir zum Beispiel newTour,

61
00:02:33,327 --> 00:02:35,077
‫dann gleich newTour

62
00:02:37,910 --> 00:02:40,014
‫und dann die Daten dort.

63
00:02:40,014 --> 00:02:44,181
‫Also haben wir es so gemacht und dann ist das eine neue Tour.

64
00:02:46,087 --> 00:02:48,504
‫Und dann geben wir newTour ein. speichern und

65
00:02:50,290 --> 00:02:51,920
‫das funktioniert ganz gut.

66
00:02:51,920 --> 00:02:54,780
‫Aber wir können es noch einfacher machen.

67
00:02:54,780 --> 00:02:58,010
‫Anstatt dies zu tun, können wir

68
00:03:02,220 --> 00:03:05,690
‫Tour machen. erstellen und dann die Daten dort einfügen.

69
00:03:05,690 --> 00:03:08,070
‫Okay und das wird genau das gleiche tun.

70
00:03:08,070 --> 00:03:10,900
‫Der Hauptunterschied besteht darin, dass wir in dieser

71
00:03:10,900 --> 00:03:14,170
‫Version hier die Methode grundsätzlich direkt in der Tour aufrufen,

72
00:03:14,170 --> 00:03:17,330
‫während wir in dieser ersten Version die Methode im

73
00:03:17,330 --> 00:03:18,970
‫neuen Dokument aufgerufen haben.

74
00:03:18,970 --> 00:03:21,560
‫Okay, und das ist also ganz anders.

75
00:03:21,560 --> 00:03:23,940
‫Wir hatten also wieder die Tour, die wir aus dem

76
00:03:23,940 --> 00:03:24,920
‫Modell erstellt haben.

77
00:03:24,920 --> 00:03:27,920
‫Und dann haben wir auf dieser Tour die Speichermethode verwendet.

78
00:03:27,920 --> 00:03:30,720
‫Weil das Dokument Zugriff auf diese Methode

79
00:03:30,720 --> 00:03:33,030
‫und viele andere Methoden hat.

80
00:03:33,030 --> 00:03:35,040
‫Aber hier in der

81
00:03:35,040 --> 00:03:39,373
‫zweiten Situation nennen wir diese Create-Methode direkt am Modell selbst, okay?

82
00:03:40,560 --> 00:03:45,463
‫Denken Sie jetzt daran, wie diese Speichermethode hier ein Versprechen zurückgegeben hat.

83
00:03:46,480 --> 00:03:49,670
‫Und so gibt diese Kreation hier auch ein Versprechen zurück.

84
00:03:49,670 --> 00:03:52,630
‫Um also Zugriff auf das Aktendokument zu bekommen,

85
00:03:52,630 --> 00:03:54,690
‫wie es in der Datenbank

86
00:03:54,690 --> 00:03:58,880
‫erstellt wurde, hätten wir dann . dann in Ordnung?

87
00:03:58,880 --> 00:04:01,810
‫Aber anstatt Versprechungen wie diese zu verwenden,

88
00:04:01,810 --> 00:04:03,920
‫werde ich asynchrones Awarten verwenden.

89
00:04:03,920 --> 00:04:04,860
‫In Ordung.

90
00:04:04,860 --> 00:04:07,960
‫Diese Funktion hier sollte also eine asynchrone Funktion sein.

91
00:04:07,960 --> 00:04:09,900
‫Alles, was wir tun

92
00:04:09,900 --> 00:04:12,250
‫müssen, ist, direkt hier asynchron zu schreiben.

93
00:04:12,250 --> 00:04:15,760
‫Wir haben also Async und können nun das Ergebnis dieses

94
00:04:15,760 --> 00:04:16,903
‫Versprechens hier abwarten.

95
00:04:18,255 --> 00:04:21,010
‫Daher hoffe ich, dass Sie damit vertraut sind.

96
00:04:21,010 --> 00:04:23,030
‫Und ich habe tatsächlich einen Abschnitt

97
00:04:23,030 --> 00:04:25,890
‫in diesem Kurs, der sich mit genau diesen Dingen beschäftigt.

98
00:04:25,890 --> 00:04:27,490
‫Wenn Sie sich diesen Abschnitt

99
00:04:27,490 --> 00:04:30,920
‫also nicht angesehen haben, aber mit Async-Await immer noch nicht 100% vertraut

100
00:04:30,920 --> 00:04:33,280
‫sind, dann schauen Sie sich diesen Abschnitt bitte

101
00:04:33,280 --> 00:04:36,040
‫an, damit Sie wirklich verstehen, was hier vor sich geht.

102
00:04:36,040 --> 00:04:39,270
‫Okay, anstatt dies zu verwenden, werde ich hier

103
00:04:39,270 --> 00:04:40,960
‫async await verwenden und

104
00:04:40,960 --> 00:04:43,790
‫dann den Ergebniswert dieses Versprechens in der

105
00:04:43,790 --> 00:04:45,413
‫neuen Tour-Variablen speichern.

106
00:04:49,220 --> 00:04:52,020
‫Okay, das letzte Stück des Puzzles

107
00:04:52,020 --> 00:04:56,410
‫hier ist natürlich, einige echte Daten in diese Erstellungsmethode zu übergeben.

108
00:04:56,410 --> 00:04:58,410
‫Anstelle dieses leeren Objekts

109
00:04:58,410 --> 00:05:01,310
‫übergeben wir also den Request-Body

110
00:05:01,310 --> 00:05:05,020
‫so req. body und das sind

111
00:05:05,020 --> 00:05:08,010
‫die Daten, die mit der Post-Anfrage geliefert werden, oder?

112
00:05:08,010 --> 00:05:09,290
‫Jetzt nur noch

113
00:05:09,290 --> 00:05:12,600
‫einmal, um sicherzustellen, dass Ihnen alles klar ist.

114
00:05:12,600 --> 00:05:15,920
‫Okay, wir können das Tourmodell direkt verwenden

115
00:05:15,920 --> 00:05:18,340
‫und die create-Methode darauf aufrufen.

116
00:05:18,340 --> 00:05:20,630
‫Dann übergeben wir an diese Funktion die

117
00:05:20,630 --> 00:05:23,600
‫Daten, die wir in der Datenbank als neue Tour speichern möchten.

118
00:05:23,600 --> 00:05:26,810
‫Und diese Daten stammen aus dem Post-Text, oder?

119
00:05:26,810 --> 00:05:30,730
‫Und das wird im Punktkörper der Anfrage gespeichert.

120
00:05:30,730 --> 00:05:32,460
‫Also diese Variable hier.

121
00:05:32,460 --> 00:05:35,503
‫Nun wird diese Methode hier dann ein Versprechen zurückgeben.

122
00:05:36,473 --> 00:05:38,850
‫Und wir erwarten dieses Versprechen mit

123
00:05:38,850 --> 00:05:42,000
‫async-await und speichern dann dieses Ergebnis in der

124
00:05:42,000 --> 00:05:44,050
‫newTour-Variable, die das neu

125
00:05:44,050 --> 00:05:48,083
‫erstellte Dokument bereits mit der ID und allem ist, okay?

126
00:05:49,700 --> 00:05:51,130
‫Also behalte ich

127
00:05:51,130 --> 00:05:53,160
‫diesen Code hier nur als Referenz.

128
00:05:53,160 --> 00:05:57,210
‫Und jetzt holen wir uns dieses Stück Daten hier zurück.

129
00:05:57,210 --> 00:05:58,363
‫Eigentlich ein Stück Code.

130
00:05:59,250 --> 00:06:00,720
‫Sparen Sie.

131
00:06:00,720 --> 00:06:03,950
‫Und jetzt erhalten wir diesen ES-Lint-Fehler.

132
00:06:03,950 --> 00:06:05,360
‫Werfen wir also einen Blick

133
00:06:05,360 --> 00:06:07,300
‫darauf, dass Sie einfach unsere Maus hier anbringen.

134
00:06:07,300 --> 00:06:10,500
‫Und es sagt uns, dass asynchrone Funktionen bis zu diesem Knoten

135
00:06:10,500 --> 00:06:13,230
‫7 nicht unterstützt werden. 6 und daher kommt

136
00:06:13,230 --> 00:06:16,140
‫dieser ES-Lint-Fehler von dem Knoten-Plugin, das wir tatsächlich

137
00:06:16,140 --> 00:06:17,320
‫installiert haben.

138
00:06:17,320 --> 00:06:18,450
‫Das sieht man also hier.

139
00:06:18,450 --> 00:06:21,410
‫In Ordnung, also werden wir das Problem beheben, indem wir

140
00:06:21,410 --> 00:06:23,920
‫einfach zum Paket gehen. json und

141
00:06:23,920 --> 00:06:25,600
‫hier finden Sie die Knotenversion,

142
00:06:25,600 --> 00:06:27,180
‫die wir tatsächlich verwenden.

143
00:06:27,180 --> 00:06:28,383
‫Das ist also ganz einfach.

144
00:06:30,880 --> 00:06:33,790
‫Wir müssen nur die Engine-Eigenschaft hier

145
00:06:33,790 --> 00:06:36,673
‫in unserem JSON-Dokument angeben.

146
00:06:39,070 --> 00:06:43,830
‫Und stellen Sie den Knoten auf größer oder

147
00:06:44,850 --> 00:06:47,230
‫gleich 10 ein.

148
00:06:47,230 --> 00:06:48,850
‫Okay, und das liegt daran,

149
00:06:48,850 --> 00:06:51,053
‫dass wir in diesem Kurs mindestens Knoten 10 verwenden.

150
00:06:52,636 --> 00:06:56,490
‫Also 7. 6 würde ausreichen, um diesen Fehler zu beseitigen,

151
00:06:56,490 --> 00:06:58,610
‫aber wir geben natürlich die tatsächliche Version an,

152
00:06:58,610 --> 00:06:59,890
‫die wir tatsächlich verwenden.

153
00:06:59,890 --> 00:07:01,690
‫Also geben wir diesem einen Save.

154
00:07:01,690 --> 00:07:03,010
‫Schließen Sie das.

155
00:07:03,010 --> 00:07:06,500
‫Und so ist unser Fehler hier nun tatsächlich weg.

156
00:07:06,500 --> 00:07:09,560
‫Jetzt nur noch ein Schritt, bevor wir dies in

157
00:07:09,560 --> 00:07:11,330
‫unserer Postman-App tatsächlich ausprobieren können.

158
00:07:11,330 --> 00:07:14,210
‫Und das ist, dass wir tatsächlich mit Fehlern umgehen müssen.

159
00:07:14,210 --> 00:07:17,860
‫Okay, und denken Sie daran, dass

160
00:07:17,860 --> 00:07:22,650
‫wir bei async-wait mit der try-Catch-Syntax auf Fehler testen müssen.

161
00:07:22,650 --> 00:07:26,003
‫Also schreiben wir einen Try-Block.

162
00:07:27,160 --> 00:07:28,760
‫Dann packen Sie unseren gesamten Code dort ein.

163
00:07:32,065 --> 00:07:33,615
‫Und dann endlich ein Fangblock.

164
00:07:34,920 --> 00:07:39,190
‫Welches, wie wir bereits wissen, Zugriff auf das Fehlerobjekt hat.

165
00:07:39,190 --> 00:07:41,410
‫Und was stellen wir nun eigentlich hier ein?

166
00:07:41,410 --> 00:07:42,940
‫Nun, wir müssen uns

167
00:07:42,940 --> 00:07:45,410
‫überlegen, wann genau ein Fehler passieren kann.

168
00:07:45,410 --> 00:07:47,790
‫Denken Sie also daran, wie wir

169
00:07:47,790 --> 00:07:50,410
‫vor zwei Vorlesungen unsere ersten Dokumente erstellt haben.

170
00:07:50,410 --> 00:07:51,820
‫Wir haben damals einen

171
00:07:51,820 --> 00:07:53,870
‫Fehler bekommen, als wir versuchten, ein

172
00:07:53,870 --> 00:07:56,600
‫Dokument ohne eines der erforderlichen Felder zu erstellen, oder?

173
00:07:56,600 --> 00:07:58,700
‫Das war also ein Validierungsfehler.

174
00:07:58,700 --> 00:08:02,370
‫Und es ist einer der Fehler, die hier abgefangen würden.

175
00:08:02,370 --> 00:08:05,290
‫Okay, denn wenn wir versuchen würden, ein Dokument zu

176
00:08:05,290 --> 00:08:07,640
‫erstellen, sagen wir, ohne eines der erforderlichen

177
00:08:07,640 --> 00:08:09,900
‫Felder, dann würde dieses Versprechen,

178
00:08:09,900 --> 00:08:12,430
‫das hier erstellt wird, abgelehnt werden, okay?

179
00:08:12,430 --> 00:08:15,000
‫Wenn wir hier also ein abgelehntes

180
00:08:15,000 --> 00:08:17,740
‫Versprechen haben, wird es in den Catch-Block eintreten.

181
00:08:17,740 --> 00:08:20,870
‫Daher möchten wir in diesem Catch-Block hier im

182
00:08:20,870 --> 00:08:23,050
‫Grunde eine Antwort zurücksenden, die

183
00:08:23,050 --> 00:08:25,580
‫besagt, dass ein Fehler aufgetreten ist.

184
00:08:25,580 --> 00:08:30,580
‫Okay, also res. Status hier wieder und

185
00:08:30,670 --> 00:08:33,483
‫400 was für schlechte Anfrage steht. json und jetzt etwas sehr ähnliches wie dieses

186
00:08:35,967 --> 00:08:36,980
‫hier, aber

187
00:08:37,950 --> 00:08:40,290
‫sein Status und das ist fehlgeschlagen und

188
00:08:40,290 --> 00:08:43,310
‫dann senden wir anstelle von Daten hier eine Nachricht

189
00:08:44,270 --> 00:08:48,050
‫und lassen uns vorerst einfach die Nachricht auf den Fehler setzen.

190
00:08:48,970 --> 00:08:51,520
‫In Ordung.

191
00:08:52,560 --> 00:08:53,393
‫Kommen wir

192
00:08:54,800 --> 00:08:59,260
‫nun endlich zurück zu unserer Postman-Anwendung und probieren Sie es aus.

193
00:08:59,260 --> 00:09:01,643
‫Okay, also erstellen Sie diese und lassen Sie

194
00:09:01,643 --> 00:09:03,990
‫uns jetzt eine neue Tour erstellen.

195
00:09:03,990 --> 00:09:06,170
‫Im Moment haben wir hier

196
00:09:06,170 --> 00:09:07,790
‫also den

197
00:09:07,790 --> 00:09:11,370
‫Namen Dauerschwierigkeit und Preis und fügen wir eigentlich

198
00:09:11,370 --> 00:09:13,860
‫auch die Bewertung hinzu und das

199
00:09:15,400 --> 00:09:18,040
‫muss in doppelten Anführungszeichen stehen 4. 7.

200
00:09:21,050 --> 00:09:21,883
‫Gut, und jetzt kommt der Moment.

201
00:09:22,900 --> 00:09:25,570
‫Senden und tatsächlich geht es los.

202
00:09:25,570 --> 00:09:29,330
‫Dies ist also die Tour, die

203
00:09:29,330 --> 00:09:32,170
‫wir gerade erstellt haben.

204
00:09:32,170 --> 00:09:33,430
‫Wir haben unsere Bewertung.

205
00:09:33,430 --> 00:09:34,520
‫Wir haben unseren Namen und wir haben unseren Preis.

206
00:09:34,520 --> 00:09:36,950
‫Und natürlich die automatisch erstellte ID.

207
00:09:36,950 --> 00:09:39,780
‫Jetzt werden Sie vielleicht bemerken, dass wir keine Schwierigkeiten und

208
00:09:39,780 --> 00:09:40,890
‫keinen Preis haben.

209
00:09:40,890 --> 00:09:44,360
‫Nun, warum denkst du, ist das so?

210
00:09:44,360 --> 00:09:46,870
‫Das liegt daran, dass diese beiden Felder tatsächlich nicht

211
00:09:46,870 --> 00:09:48,920
‫in unserem Schema enthalten sind und

212
00:09:48,920 --> 00:09:51,030
‫daher nicht in die Datenbank aufgenommen werden.

213
00:09:51,030 --> 00:09:54,240
‫Alles andere, was nicht in unserem Schema

214
00:09:54,240 --> 00:09:56,730
‫ist, wird also einfach ignoriert.

215
00:09:56,730 --> 00:09:57,840
‫Das ist also die Macht unseres Schemas, in Ordnung?

216
00:09:57,840 --> 00:10:01,800
‫Großartig, jetzt versuchen wir es tatsächlich noch einmal, das zu senden,

217
00:10:01,800 --> 00:10:05,210
‫und das sollte uns einen Fehler geben, oder?

218
00:10:05,210 --> 00:10:08,113
‫Und tatsächlich sind wir da.

219
00:10:08,950 --> 00:10:10,650
‫Wir haben unsere 400 schlechte Anfrage.

220
00:10:10,650 --> 00:10:13,340
‫Und wir haben diese Nachricht, die der vollständige Fehler

221
00:10:13,340 --> 00:10:15,200
‫ist, den wir erhalten haben.

222
00:10:15,200 --> 00:10:17,810
‫Und hier sehen wir, dass die Fehlermeldung doppelter Schlüssel ist.

223
00:10:17,810 --> 00:10:21,330
‫Und das liegt daran, dass wir bereits die Test Tour 2 haben.

224
00:10:21,330 --> 00:10:24,510
‫Und so konnte es kein weiteres schaffen.

225
00:10:24,510 --> 00:10:26,563
‫Also lasst uns hier einfach eine andere erstellen, wie Jonas Tour.

226
00:10:29,330 --> 00:10:33,960
‫Es spielt keine Rolle, okay?

227
00:10:33,960 --> 00:10:35,933
‫Ich möchte es nur erstellen,

228
00:10:36,850 --> 00:10:39,083
‫zuerst ohne all dies, nur um

229
00:10:39,940 --> 00:10:42,490
‫zu sehen, ob wir einen weiteren Fehler erhalten.

230
00:10:42,490 --> 00:10:45,030
‫Und tatsächlich bekommen wir hier noch einige Fehler mehr.

231
00:10:45,030 --> 00:10:48,070
‫Diesmal heißt es, dass die Tourvalidierung fehlgeschlagen

232
00:10:48,070 --> 00:10:50,300
‫ist, weil eine Tour einen

233
00:10:50,300 --> 00:10:51,870
‫Preis haben muss.

234
00:10:51,870 --> 00:10:54,053
‫Okay, Sie sehen also, dass

235
00:10:54,980 --> 00:10:57,170
‫wir hier gerade diese seltsame Fehlerstruktur haben.

236
00:10:57,170 --> 00:11:00,090
‫Also gibt Mongo DB dieses riesige komplette Fehlerobjekt zurück.

237
00:11:00,090 --> 00:11:04,650
‫Und später werden wir uns tatsächlich darum kümmern.

238
00:11:04,650 --> 00:11:07,100
‫Wir werden also nur einen ganzen Abschnitt über die Fehlerbehandlung haben.

239
00:11:07,100 --> 00:11:10,720
‫Und bis dahin werden wir einige bedeutsamere Fehler erstellen.

240
00:11:10,720 --> 00:11:14,420
‫Okay, jetzt ersetzen wir dieses Fehlerobjekt hier

241
00:11:14,420 --> 00:11:18,080
‫einfach durch eine normale Zeichenfolge.

242
00:11:18,080 --> 00:11:20,490
‫Nehmen wir an, es wurden ungültige Daten gesendet.

243
00:11:20,490 --> 00:11:25,440
‫Okay, machen Sie so etwas nicht in einer echten Produktionsanwendung,

244
00:11:25,440 --> 00:11:27,950
‫aber wir werden etwas später

245
00:11:27,950 --> 00:11:30,350
‫eine echte Fehlerbehandlung

246
00:11:30,350 --> 00:11:32,930
‫haben, die sich darum kümmert.

247
00:11:32,930 --> 00:11:35,430
‫Okay, dem Client werden also sinnvolle Fehler angezeigt.

248
00:11:35,430 --> 00:11:39,360
‫Gehen wir also einfach hierher zurück und senden Sie

249
00:11:39,360 --> 00:11:40,750
‫es noch einmal.

250
00:11:41,610 --> 00:11:43,040
‫Und so bekommen wir jetzt diese normale Saite hier.

251
00:11:43,040 --> 00:11:45,950
‫Also lassen Sie uns hier einfach den Preis erstellen.

252
00:11:45,950 --> 00:11:50,510
‫Setzen wir es auf 567 und

253
00:11:50,510 --> 00:11:53,520
‫senden es dann.

254
00:11:54,490 --> 00:11:55,700
‫Und so werden Sie jetzt sehen, dass

255
00:11:55,700 --> 00:11:56,860
‫unsere Standardbewertung hier tatsächlich noch funktioniert.

256
00:11:56,860 --> 00:11:59,813
‫Lassen Sie uns all dies jetzt auch im Kompass herausfinden.

257
00:12:01,800 --> 00:12:05,810
‫Und tatsächlich bekommen wir unsere vier Touren in die Datenbank.

258
00:12:05,810 --> 00:12:09,860
‫Also all diese seltsamen Tests, die wir

259
00:12:09,860 --> 00:12:12,210
‫bis jetzt gemacht haben.

260
00:12:12,210 --> 00:12:14,960
‫Also lass uns einfach weitermachen und die letzten beiden löschen.

261
00:12:14,960 --> 00:12:19,140
‫Das waren wirklich nur zum Testen.

262
00:12:19,140 --> 00:12:21,123
‫In Ordung.

263
00:12:24,500 --> 00:12:26,130
‫Hier ist also wohl etwas schief gelaufen.

264
00:12:26,130 --> 00:12:28,773
‫Okay, jetzt sind wir wieder bei diesen beiden.

265
00:12:30,130 --> 00:12:32,782
‫Lassen Sie uns jetzt einfach den dritten erstellen, den

266
00:12:32,782 --> 00:12:34,610
‫wir zuvor im letzten Abschnitt hatten.

267
00:12:34,610 --> 00:12:36,760
‫Welches ist der Schnee-Abenteurer.

268
00:12:36,760 --> 00:12:38,763
‫Also der

269
00:12:42,490 --> 00:12:43,630
‫Schneeabenteurer.

270
00:12:45,800 --> 00:12:47,080
‫Der Preis war...

271
00:12:47,080 --> 00:12:48,280
‫Ich bin mir

272
00:12:48,280 --> 00:12:49,790
‫nicht mehr sicher, vielleicht 697.

273
00:12:49,790 --> 00:12:51,973
‫Und die Bewertung

274
00:12:54,410 --> 00:12:57,870
‫ist wie sechs oder tatsächlich 4. 8.

275
00:12:57,870 --> 00:12:59,963
‫Habe den Typen geschickt.

276
00:13:01,360 --> 00:13:02,800
‫Und so gehen wir in der Tat los.

277
00:13:02,800 --> 00:13:04,600
‫Groß.

278
00:13:04,600 --> 00:13:05,810
‫Um kurz unsere createTour-Funktion zusammenzufassen.

279
00:13:05,810 --> 00:13:09,050
‫Wir haben hier also einen Versuch mit Catch, weil wir hier

280
00:13:09,050 --> 00:13:10,740
‫tatsächlich eine asynchrone Wait-Funktion verwenden.

281
00:13:10,740 --> 00:13:13,833
‫Richtig, also verwenden wir async-await, weil

282
00:13:14,859 --> 00:13:16,100
‫diese Tour. create gibt ein

283
00:13:16,100 --> 00:13:18,910
‫Promise zurück, auf das

284
00:13:18,910 --> 00:13:21,500
‫wir warten, damit wir das neu erstellte Tourdokument

285
00:13:21,500 --> 00:13:23,530
‫in dieser Variablen speichern und es dann

286
00:13:23,530 --> 00:13:25,340
‫zusammen mit der Antwort an

287
00:13:25,340 --> 00:13:27,277
‫den Client hier unten senden können.

288
00:13:27,277 --> 00:13:30,280
‫Okay, aber falls ein Fehler auftritt, wie

289
00:13:30,280 --> 00:13:32,600
‫zum Beispiel ein Validierungsfehler, wird

290
00:13:32,600 --> 00:13:34,850
‫dieser Fehler abgefangen und

291
00:13:34,850 --> 00:13:37,120
‫wir senden etwas anderes mit

292
00:13:37,120 --> 00:13:39,700
‫dieser Fehlermeldung an den Client zurück.

293
00:13:39,700 --> 00:13:41,900
‫So erstellen wir Dokumente mit Mungo.

294
00:13:41,900 --> 00:13:44,890
‫Als nächstes werden wir über das Lesen von Dokumenten sprechen.

