﻿1
00:00:01,010 --> 00:00:02,650
‫Männlicher Ausbilder: Lassen Sie

2
00:00:02,650 --> 00:00:05,053
‫uns nun endlich die Validierungsfehler von Mongoose behandeln.

3
00:00:06,630 --> 00:00:09,750
‫Erinnern Sie sich also daran, wie wir versucht haben, eine Tour

4
00:00:09,750 --> 00:00:11,410
‫mit ungültigen Daten hier zu

5
00:00:11,410 --> 00:00:13,890
‫aktualisieren, und dann diese Art von Fehler erhalten haben?

6
00:00:13,890 --> 00:00:15,160
‫Okay.

7
00:00:15,160 --> 00:00:17,923
‫Und versuchen wir tatsächlich, noch einen hinzuzufügen.

8
00:00:19,890 --> 00:00:24,350
‫Also ein Name, der wirklich kurz ist, okay?

9
00:00:24,350 --> 00:00:27,410
‫Und weil das wieder nicht erlaubt ist.

10
00:00:27,410 --> 00:00:30,680
‫Oh, und jetzt können wir unseren Fehler tatsächlich nicht mehr sehen,

11
00:00:30,680 --> 00:00:33,000
‫weil wir jetzt in der Produktion sind.

12
00:00:33,000 --> 00:00:34,750
‫Und natürlich wird dieser Fehler im

13
00:00:34,750 --> 00:00:36,370
‫Moment nicht richtig behandelt.

14
00:00:36,370 --> 00:00:38,730
‫Es ist nicht als betriebsbereit gekennzeichnet.

15
00:00:38,730 --> 00:00:39,580
‫Denken

16
00:00:39,580 --> 00:00:44,020
‫Sie also daran, dass wir diese Art von generischen Fehlermeldungen zurückbekommen.

17
00:00:44,020 --> 00:00:45,040
‫Okay?

18
00:00:45,040 --> 00:00:49,530
‫Um also den Fehler zu sehen, den wir zuvor hatten,

19
00:00:49,530 --> 00:00:52,263
‫kehren wir schnell zur Entwicklung zurück.

20
00:00:53,810 --> 00:00:55,253
‫Also npm starten.

21
00:00:58,950 --> 00:01:00,610
‫Und senden Sie es

22
00:01:00,610 --> 00:01:01,810
‫jetzt erneut.

23
00:01:01,810 --> 00:01:05,220
‫Und jetzt bekommen wir unsere Entwicklungsfehler zurück, okay?

24
00:01:05,220 --> 00:01:06,590
‫Denn jetzt möchte

25
00:01:06,590 --> 00:01:10,410
‫ich Ihnen zeigen, wie wir aus all dem, was wir

26
00:01:10,410 --> 00:01:13,590
‫hier haben, tatsächlich eine sinnvolle Fehlermeldung erstellen können.

27
00:01:13,590 --> 00:01:14,670
‫Jetzt rechts.

28
00:01:14,670 --> 00:01:16,690
‫Innerhalb unseres Fehlers

29
00:01:16,690 --> 00:01:19,280
‫erhalten wir also Fehlereigenschaften.

30
00:01:19,280 --> 00:01:21,800
‫Und diese Eigenschaft selbst ist

31
00:01:21,800 --> 00:01:24,540
‫ein Objekt, das viele Objekte enthält, und

32
00:01:24,540 --> 00:01:28,770
‫jedes davon ist für eines der Felder, das einen Fehler enthält.

33
00:01:28,770 --> 00:01:29,790
‫Gut?

34
00:01:29,790 --> 00:01:33,760
‫Der erste hier ist also für die Länge der Tour.

35
00:01:33,760 --> 00:01:35,760
‫Dann ist der zweite wegen der Schwierigkeit,

36
00:01:35,760 --> 00:01:37,310
‫das ist auch falsch.

37
00:01:37,310 --> 00:01:40,400
‫Und der dritte ist für die Bewertung, okay?

38
00:01:40,400 --> 00:01:44,520
‫Jeder von diesen hat also tatsächlich eine nette Fehlermeldung, okay?

39
00:01:44,520 --> 00:01:48,210
‫Im Grunde also diejenige, die wir in unserem Mongoose-Schema definiert haben.

40
00:01:48,210 --> 00:01:50,480
‫Und jetzt wollen wir diese drei

41
00:01:50,480 --> 00:01:52,490
‫Nachrichten von hier extrahieren

42
00:01:52,490 --> 00:01:55,920
‫und sie alle in eine Zeichenfolge bringen, in Ordnung?

43
00:01:55,920 --> 00:01:58,593
‫Also lass uns weitermachen und das tun.

44
00:01:59,720 --> 00:02:00,553
‫Okay.

45
00:02:00,553 --> 00:02:01,740
‫Und wieder

46
00:02:01,740 --> 00:02:05,363
‫werde ich damit beginnen, die Bedingung hier unten zu erstellen.

47
00:02:06,720 --> 00:02:07,553
‫Also if(error),

48
00:02:09,210 --> 00:02:10,760
‫und sehen wir uns das an.

49
00:02:12,270 --> 00:02:14,290
‫Hier haben wir also den Fehler.

50
00:02:14,290 --> 00:02:16,413
‫Wir haben die Fehler, alle.

51
00:02:17,510 --> 00:02:19,840
‫Und ich muss hier scrollen.

52
00:02:19,840 --> 00:02:22,320
‫Und ja, hier ist der Name.

53
00:02:22,320 --> 00:02:26,300
‫Also Fehler. Name ist ValidationError, in Ordnung?

54
00:02:26,300 --> 00:02:27,453
‫Also greifen wir das an.

55
00:02:32,150 --> 00:02:32,983
‫Okay.

56
00:02:32,983 --> 00:02:36,010
‫Dies ist also wieder ein Fehler, der von Mongoose erstellt wurde.

57
00:02:36,010 --> 00:02:37,440
‫Also genau wie der

58
00:02:37,440 --> 00:02:40,023
‫erste, und so sehen sie ähnlich aus, okay.

59
00:02:41,150 --> 00:02:42,553
‫Jetzt will ich das hier nicht.

60
00:02:43,400 --> 00:02:45,410
‫Aber stattdessen möchte

61
00:02:45,410 --> 00:02:48,863
‫ich, dass der Fehler handleValidationErrorDB entspricht

62
00:02:54,290 --> 00:02:57,123
‫und den Fehler einsenden, okay?

63
00:02:59,400 --> 00:03:00,933
‫Lassen Sie uns das jetzt noch einmal kopieren.

64
00:03:08,560 --> 00:03:09,840
‫Gut.

65
00:03:09,840 --> 00:03:13,723
‫Und lassen Sie uns noch einmal beginnen, indem Sie unsere Nachricht erstellen.

66
00:03:19,090 --> 00:03:20,523
‫Ungültige Eingabedaten.

67
00:03:23,060 --> 00:03:25,043
‫Und dann geben wir auch den Fehler zurück.

68
00:03:27,520 --> 00:03:29,020
‫Also neuer AppError(Nachricht, 400).

69
00:03:30,275 --> 00:03:31,860
‫VS Code hat also

70
00:03:31,860 --> 00:03:35,073
‫bereits erkannt, dass ich genau das eingeben wollte, in Ordnung?

71
00:03:38,130 --> 00:03:40,280
‫Um nun aus allen

72
00:03:40,280 --> 00:03:43,400
‫Strings aus allen Fehlern einen großen String

73
00:03:43,400 --> 00:03:46,330
‫zu erstellen, müssen wir im Grunde alle

74
00:03:46,330 --> 00:03:51,180
‫diese Objekte durchlaufen und dann alle Fehlermeldungen in ein neues Array extrahieren.

75
00:03:51,180 --> 00:03:53,573
‫Schauen wir uns das also noch einmal an.

76
00:03:54,440 --> 00:03:55,320
‫Okay.

77
00:03:55,320 --> 00:03:58,430
‫Das Objekt, das alle Objekte enthält,

78
00:03:58,430 --> 00:04:01,290
‫weist also Fehler auf, okay?

79
00:04:01,290 --> 00:04:03,800
‫Wir haben also einen Fehler für den Namen, einen für

80
00:04:03,800 --> 00:04:05,870
‫den Schwierigkeitsgrad und einen für die durchschnittlichen Bewertungen.

81
00:04:05,870 --> 00:04:09,923
‫Und so werden wir dieses Fehlerobjekt im Grunde durchschleifen.

82
00:04:10,810 --> 00:04:11,660
‫Okay?

83
00:04:11,660 --> 00:04:14,190
‫Und in JavaScript verwenden wir Object. Werte, um

84
00:04:14,190 --> 00:04:17,290
‫im Grunde über ein Objekt zu schleifen.

85
00:04:17,290 --> 00:04:19,720
‫Also die Elemente eines Objekts.

86
00:04:19,720 --> 00:04:21,260
‫Gut?

87
00:04:21,260 --> 00:04:25,000
‫Lassen Sie uns hier eine Variable namens error erstellen,

88
00:04:25,000 --> 00:04:26,700
‫die vorerst wieder ein

89
00:04:26,700 --> 00:04:28,583
‫Array aller Fehlermeldungen ist,

90
00:04:29,640 --> 00:04:32,963
‫und jetzt Object. Werte.

91
00:04:34,930 --> 00:04:38,863
‫Und so wollen wir die Werte von err. Fehler, in Ordnung?

92
00:04:41,540 --> 00:04:44,580
‫Und jetzt überfliege sie mit einer Karte.

93
00:04:44,580 --> 00:04:46,160
‫Und dann geben

94
00:04:46,160 --> 00:04:50,220
‫wir in jeder Iteration einfach die Fehlermeldung zurück, okay?

95
00:04:50,220 --> 00:04:54,540
‫Nur um sicherzustellen, dass wir hier alle auf derselben

96
00:04:54,540 --> 00:04:59,470
‫Seite sind, dem Objekt. Werte sind diese Objekte, okay?

97
00:04:59,470 --> 00:05:04,190
‫Also dieses Objekt und dieses Objekt und das nächste, okay?

98
00:05:04,190 --> 00:05:05,730
‫Das sind also die Werte.

99
00:05:05,730 --> 00:05:06,930
‫Um die Botschaft

100
00:05:06,930 --> 00:05:09,110
‫zu extrahieren, müssen wir jetzt nur

101
00:05:09,110 --> 00:05:12,210
‫noch den Wert sagen. Nachricht, okay?

102
00:05:12,210 --> 00:05:13,533
‫So . Botschaft.

103
00:05:16,410 --> 00:05:18,380
‫Also im Grunde genommen der aktuelle Wert,

104
00:05:18,380 --> 00:05:19,710
‫oder sagen wir das

105
00:05:19,710 --> 00:05:21,653
‫aktuelle Element, ich verwende dafür gerne element,

106
00:05:22,640 --> 00:05:25,423
‫und wir möchten el zurückgeben. Botschaft.

107
00:05:26,870 --> 00:05:27,703
‫Okay.

108
00:05:28,940 --> 00:05:32,040
‫Und das sollte jetzt natürlich nicht hier sein.

109
00:05:32,040 --> 00:05:34,140
‫Und das war Ihnen wahrscheinlich auch schon aufgefallen.

110
00:05:35,260 --> 00:05:39,930
‫Also eigentlich wollen wir das hier, okay?

111
00:05:39,930 --> 00:05:41,280
‫Und jetzt müssen

112
00:05:41,280 --> 00:05:45,163
‫wir das nur noch in unseren Nachrichtenstring einfügen, in Ordnung?

113
00:05:46,830 --> 00:05:51,700
‫Also Fehler, und jetzt fügen wir sie einfach alle zu einer

114
00:05:51,700 --> 00:05:56,700
‫Zeichenfolge zusammen, indem wir einen Punkt und dann ein Leerzeichen verwenden, okay?

115
00:05:56,930 --> 00:05:59,263
‫Und Sie werden gleich sehen, warum das so ist.

116
00:06:00,350 --> 00:06:01,183
‫Gut.

117
00:06:02,590 --> 00:06:05,130
‫Also schalten wir hier zurück zur Produktion.

118
00:06:05,130 --> 00:06:07,483
‫Führen Sie also unser Produktionsstartskript aus.

119
00:06:08,960 --> 00:06:12,083
‫Versuchen Sie es jetzt noch einmal und warten wir darauf,

120
00:06:13,440 --> 00:06:14,310
‫und bam!

121
00:06:14,310 --> 00:06:15,470
‫Auf geht's!

122
00:06:15,470 --> 00:06:17,530
‫Also ungültige Eingabedaten.

123
00:06:17,530 --> 00:06:19,990
‫Dann muss die erste Fehlerzeichenfolge mehr

124
00:06:19,990 --> 00:06:22,150
‫oder gleich 10 Zeichen haben.

125
00:06:22,150 --> 00:06:23,810
‫Dann der

126
00:06:23,810 --> 00:06:26,040
‫zweite und der dritte.

127
00:06:26,040 --> 00:06:26,900
‫Perfekt.

128
00:06:26,900 --> 00:06:30,210
‫Und deshalb habe ich den Punkt und das Leerzeichen verwendet, okay?

129
00:06:30,210 --> 00:06:33,680
‫Also um diese drei Strings im Grunde durch einen Punkt

130
00:06:33,680 --> 00:06:36,210
‫und ein Leerzeichen zu trennen, in Ordnung?

131
00:06:36,210 --> 00:06:38,680
‫Und das sieht jetzt nach einer sehr

132
00:06:38,680 --> 00:06:41,693
‫schön formatierten Fehlermeldung aus, die jeder leicht verstehen kann.

133
00:06:42,870 --> 00:06:43,703
‫Rechts?

134
00:06:43,703 --> 00:06:46,180
‫Also, wir sind im Grunde hier fertig.

135
00:06:46,180 --> 00:06:47,013
‫Gut.

136
00:06:47,013 --> 00:06:49,890
‫Jetzt hätten wir diesen Fehler, den Handhabungsfehler,

137
00:06:49,890 --> 00:06:52,120
‫noch viel vollständiger machen können.

138
00:06:52,120 --> 00:06:56,640
‫Zum Beispiel könnten wir verschiedene Fehlerschweregrade definieren, wie zum Beispiel: Dieser

139
00:06:56,640 --> 00:06:59,130
‫Fehler ist nicht so wichtig,

140
00:06:59,130 --> 00:07:01,130
‫dieser Fehler ist mittelschwer

141
00:07:01,130 --> 00:07:04,770
‫und dieser Fehler ist sehr wichtig oder sogar kritisch.

142
00:07:04,770 --> 00:07:08,400
‫Und wir könnten dann auch einigen Administratoren über kritische

143
00:07:08,400 --> 00:07:10,430
‫Fehler eine E-Mail senden.

144
00:07:10,430 --> 00:07:14,120
‫Und wirklich, es gibt eine Menge Dinge, die wir umsetzen könnten.

145
00:07:14,120 --> 00:07:18,300
‫Aber noch einmal, in einer Art kleiner Anwendung wie dieser ist

146
00:07:18,300 --> 00:07:21,810
‫das, was wir hier haben, schon richtig gut, okay?

147
00:07:21,810 --> 00:07:24,410
‫Das ist also schon eine ziemlich robuste

148
00:07:24,410 --> 00:07:25,970
‫Strategie, die wir hier

149
00:07:25,970 --> 00:07:29,150
‫umgesetzt haben, und ich bin wirklich zufrieden damit, okay?

150
00:07:29,150 --> 00:07:32,520
‫Diese ganze Logik hier mit den Bedienungsfehlern, die

151
00:07:32,520 --> 00:07:34,200
‫wir hier implementiert

152
00:07:34,200 --> 00:07:36,393
‫haben, ist also schon ziemlich ausgefeilt.

153
00:07:37,250 --> 00:07:38,083
‫Okay?

154
00:07:39,290 --> 00:07:42,190
‫Sollten wir nun jemals einen weiteren Fehler

155
00:07:42,190 --> 00:07:44,420
‫finden, den wir als funktionsfähig

156
00:07:44,420 --> 00:07:46,410
‫markieren möchten, müssten

157
00:07:46,410 --> 00:07:50,120
‫wir natürlich nur etwas Ähnliches wie hier tun, okay?

158
00:07:50,120 --> 00:07:53,750
‫Implementieren Sie also im Grunde eine andere Funktion dafür

159
00:07:53,750 --> 00:07:56,630
‫und geben Sie dann unseren eigenen

160
00:07:56,630 --> 00:07:58,620
‫Betriebsfehler zurück, damit die Sendefehlerproduktion

161
00:07:58,620 --> 00:08:01,580
‫diesen Betriebsfehler dann tatsächlich an den Client

162
00:08:01,580 --> 00:08:03,473
‫senden kann, richtig?

163
00:08:04,320 --> 00:08:06,580
‫Okay, und damit

164
00:08:06,580 --> 00:08:09,080
‫ist unser Fehlercontroller eigentlich fertig.

165
00:08:09,080 --> 00:08:12,010
‫Aber es gibt noch einige andere Fehler, die

166
00:08:12,010 --> 00:08:16,090
‫wir behandeln müssen, die komplett außerhalb von Mongo oder sogar Express liegen.

167
00:08:16,090 --> 00:08:19,123
‫Und das machen wir im Rest dieses Abschnitts.

