﻿1
00:00:01,060 --> 00:00:03,440
‫Kursleiter: Mongoose bietet uns Entwicklern

2
00:00:03,440 --> 00:00:05,823
‫also sehr leistungsfähige Möglichkeiten zur Validierung

3
00:00:05,823 --> 00:00:08,280
‫von Daten, die in unser Modell eingehen.

4
00:00:08,280 --> 00:00:10,430
‫In diesem Video erfahren

5
00:00:10,430 --> 00:00:13,093
‫Sie alles über die Datenvalidierung mit Mongoose.

6
00:00:14,870 --> 00:00:18,110
‫Was genau bedeutet nun Validierung?

7
00:00:18,110 --> 00:00:21,470
‫Bei der Validierung wird im Wesentlichen geprüft, ob

8
00:00:21,470 --> 00:00:24,270
‫die eingegebenen Werte für jedes Feld

9
00:00:24,270 --> 00:00:27,430
‫in unserem Dokumentschema das richtige Format haben und

10
00:00:27,430 --> 00:00:30,860
‫ob tatsächlich Werte für alle erforderlichen Felder eingegeben wurden.

11
00:00:30,860 --> 00:00:33,940
‫Auf der anderen Seite haben wir jetzt auch

12
00:00:33,940 --> 00:00:37,240
‫eine Bereinigung, die sicherstellen soll, dass die eingegebenen Daten

13
00:00:37,240 --> 00:00:40,250
‫grundsätzlich sauber sind, sodass kein Schadcode in

14
00:00:40,250 --> 00:00:42,240
‫unsere Datenbank oder in

15
00:00:42,240 --> 00:00:44,330
‫die Anwendung selbst eingeschleust wird.

16
00:00:44,330 --> 00:00:47,470
‫In diesem Schritt entfernen wir also unerwünschte

17
00:00:47,470 --> 00:00:50,730
‫Zeichen oder sogar Code aus den Eingabedaten, in Ordnung?

18
00:00:50,730 --> 00:00:53,210
‫Und dies ist tatsächlich ein entscheidender

19
00:00:53,210 --> 00:00:56,180
‫Schritt, etwa ein goldener Standard in der Backend-Entwicklung.

20
00:00:56,180 --> 00:00:58,690
‫Um niemals Eingabedaten von einem Benutzer so

21
00:00:58,690 --> 00:01:00,690
‫zu akzeptieren, wie sie sind.

22
00:01:00,690 --> 00:01:03,860
‫Daher müssen wir diese eingehenden Daten immer bereinigen.

23
00:01:03,860 --> 00:01:06,350
‫Aber wie auch immer, ich überlasse die

24
00:01:06,350 --> 00:01:08,620
‫Datenbereinigung dem Sicherheitsteil des Kurses,

25
00:01:08,620 --> 00:01:10,070
‫damit wir uns

26
00:01:10,070 --> 00:01:13,400
‫in dieser Vorlesung ganz auf die Datenvalidierung konzentrieren können.

27
00:01:13,400 --> 00:01:15,430
‫Und wir führen diese Datenvalidierung direkt

28
00:01:15,430 --> 00:01:17,240
‫hier am Modell durch.

29
00:01:17,240 --> 00:01:20,130
‫Und das liegt wiederum an der Philosophie des

30
00:01:20,130 --> 00:01:22,110
‫fetten Modells und des

31
00:01:22,110 --> 00:01:24,230
‫dünnen Controllers, die das Modell zum

32
00:01:24,230 --> 00:01:26,770
‫perfekten Ort für die Validierung macht, oder?

33
00:01:26,770 --> 00:01:29,540
‫Und tatsächlich wird Mongoose bereits mit

34
00:01:29,540 --> 00:01:32,230
‫einer Reihe von Validierungstools ausgeliefert.

35
00:01:32,230 --> 00:01:36,120
‫Lassen Sie uns hier nun tatsächlich eine Datenvalidierung durchführen.

36
00:01:36,120 --> 00:01:37,680
‫Und tatsächlich haben wir es bereits getan.

37
00:01:37,680 --> 00:01:41,850
‫Also, wenn wir diese Anforderung hier verwendet haben, ist das

38
00:01:41,850 --> 00:01:45,290
‫eigentlich schon ein eingebauter Datenvalidator, in Ordnung?

39
00:01:45,290 --> 00:01:48,368
‫Sie sehen also, dass wir hier in den Schematypoptionen

40
00:01:48,368 --> 00:01:50,970
‫einen Validator verwenden, wie er erforderlich ist.

41
00:01:50,970 --> 00:01:54,340
‫Und erforderlich ist eigentlich für alle Datentypen verfügbar.

42
00:01:54,340 --> 00:01:56,870
‫Also nicht nur Saiten, sondern wirklich alles.

43
00:01:56,870 --> 00:02:00,010
‫Zahlen, Boolesche Werte, Datumsangaben oder was auch

44
00:02:00,010 --> 00:02:01,930
‫immer Sie verwenden.

45
00:02:01,930 --> 00:02:04,970
‫Dann haben wir auch hier ein Unikat, aber

46
00:02:04,970 --> 00:02:08,610
‫bitte beachten Sie, dass dies technisch gesehen kein Validator ist.

47
00:02:08,610 --> 00:02:10,170
‫Es wird immer noch einen

48
00:02:10,170 --> 00:02:12,080
‫Fehler erzeugen, wenn wir einen doppelten Namen

49
00:02:12,080 --> 00:02:15,167
‫haben, aber auch hier ist dies nicht wirklich ein Validator, in Ordnung?

50
00:02:15,167 --> 00:02:17,790
‫Erforderlich ist jedoch ein Validator, und deshalb

51
00:02:17,790 --> 00:02:20,403
‫zeige ich Ihnen jetzt einen anderen, der

52
00:02:20,403 --> 00:02:23,000
‫speziell nur für Zeichenfolgen gedacht

53
00:02:23,000 --> 00:02:26,870
‫ist, und zwar als maximale Länge und auch als Mindestlänge.

54
00:02:26,870 --> 00:02:28,160
‫Wir haben also die

55
00:02:30,320 --> 00:02:32,830
‫maximale Länge und wie der Name schon sagt, verwenden wir

56
00:02:32,830 --> 00:02:35,470
‫dies, um die maximale Länge anzugeben, die ein String haben kann.

57
00:02:35,470 --> 00:02:37,490
‫Und wenn es länger ist, dann

58
00:02:37,490 --> 00:02:39,800
‫wird es einen Fehler produzieren, in Ordnung?

59
00:02:39,800 --> 00:02:42,936
‫Machen wir das also genau wie zuvor mit

60
00:02:42,936 --> 00:02:47,170
‫required, wo wir ein Array angegeben und dann den Wert festgelegt haben.

61
00:02:47,170 --> 00:02:50,940
‫Nehmen wir also an, wir wollen 40 als maximale Stringlänge

62
00:02:50,940 --> 00:02:53,920
‫und fügen dann den Fehler danach hinzu.

63
00:02:53,920 --> 00:02:56,850
‫Also im Grunde die Fehlermeldung, die wir erhalten.

64
00:02:56,850 --> 00:03:01,093
‫Ein Tourname darf also höchstens 40

65
00:03:05,410 --> 00:03:08,693
‫Zeichen lang sein.

66
00:03:10,880 --> 00:03:13,320
‫Okay, das ist also die maximale Länge, und

67
00:03:13,320 --> 00:03:15,673
‫dann haben wir auch die minimale Länge.

68
00:03:18,600 --> 00:03:22,480
‫In Ordnung, und setzen wir das auf

69
00:03:22,480 --> 00:03:27,480
‫10, also muss ein Tourname mehr oder gleich 10 Zeichen haben.

70
00:03:29,010 --> 00:03:33,590
‫Okay, und so haben wir diese beiden Validatoren, die

71
00:03:33,590 --> 00:03:37,320
‫eigentlich nur für Strings verfügbar sind, okay?

72
00:03:37,320 --> 00:03:40,690
‫Und so lassen Sie uns jetzt wirklich weitermachen und das versuchen.

73
00:03:40,690 --> 00:03:42,690
‫Also werde ich hier eine neue Tour erstellen.

74
00:03:44,570 --> 00:03:46,453
‫Und das ist keine geheime Tour,

75
00:03:48,050 --> 00:03:50,183
‫aber der Rest spielt hier keine Rolle.

76
00:03:53,550 --> 00:03:56,100
‫Ich nenne das einfach eine Testtour und mal

77
00:03:56,100 --> 00:03:58,160
‫sehen, wie viele Charaktere wir haben,

78
00:03:58,160 --> 00:04:00,280
‫also vier plus eins plus vier, also

79
00:04:00,280 --> 00:04:02,130
‫haben wir nur neun Charaktere.

80
00:04:02,130 --> 00:04:05,223
‫Daher sollten wir jetzt damit rechnen, tatsächlich einen Fehler zu erhalten.

81
00:04:06,490 --> 00:04:07,980
‫Also, lass uns das ausprobieren.

82
00:04:07,980 --> 00:04:09,910
‫Und tatsächlich muss ein Tourname

83
00:04:09,910 --> 00:04:12,460
‫mehr oder gleich 10 Zeichen lang sein.

84
00:04:12,460 --> 00:04:15,873
‫Großartig, aber was ist jetzt mit der Aktualisierung von Touren?

85
00:04:17,290 --> 00:04:19,860
‫Also, lass uns hier einen davon besorgen.

86
00:04:19,860 --> 00:04:23,910
‫Wir haben also diese Testtour zwei hier, also versuchen

87
00:04:23,910 --> 00:04:25,963
‫wir, diese zu aktualisieren.

88
00:04:27,540 --> 00:04:30,173
‫Also gehen wir zu unserer Update-Tour-Route.

89
00:04:33,690 --> 00:04:38,023
‫Und jetzt lassen Sie uns hier den Namen in Test ändern, die

90
00:04:39,890 --> 00:04:43,240
‫Anfrage senden und wir erhalten den gleichen Fehler.

91
00:04:43,240 --> 00:04:45,540
‫Dies funktioniert jetzt nur aufgrund einer

92
00:04:45,540 --> 00:04:47,400
‫Einstellung, die wir bei

93
00:04:47,400 --> 00:04:50,600
‫der Implementierung dieses Aktualisierungshandlers weit zurück gesetzt haben.

94
00:04:50,600 --> 00:04:53,853
‫Lassen Sie mich Ihnen das also schnell im Tourcontroller zeigen.

95
00:04:54,860 --> 00:04:57,846
‫Löschen und aktualisieren, und so ist es wegen

96
00:04:57,846 --> 00:05:00,255
‫dieser Option hier runValidators, auf

97
00:05:00,255 --> 00:05:03,180
‫true gesetzt, dass die Validatoren erneut ausgeführt werden.

98
00:05:03,180 --> 00:05:04,959
‫Wenn ich es

99
00:05:04,959 --> 00:05:09,750
‫jetzt auf false setze, dann sollte Mongoose diesen Namen gerne annehmen.

100
00:05:09,750 --> 00:05:12,673
‫Und das tut es tatsächlich.

101
00:05:14,880 --> 00:05:17,072
‫Also, lass es uns auf etwas

102
00:05:17,072 --> 00:05:18,453
‫längeres zurücksetzen, es

103
00:05:20,630 --> 00:05:24,073
‫spielt keine Rolle, okay, und wenn ich es zurück auf

104
00:05:26,950 --> 00:05:29,070
‫true setze, dann sollte es

105
00:05:29,070 --> 00:05:33,140
‫es nicht akzeptieren, und tatsächlich bekommen wir unseren Fehler zurück, in Ordnung?

106
00:05:33,140 --> 00:05:34,540
‫Ich wollte Ihnen

107
00:05:34,540 --> 00:05:36,763
‫nur schnell die Tatsache dieser Einstellung zeigen.

108
00:05:38,820 --> 00:05:42,370
‫In Ordnung, und so, ja, diese funktionieren jetzt.

109
00:05:42,370 --> 00:05:46,030
‫Lassen Sie uns hier ein paar weitere Validatoren ausprobieren.

110
00:05:46,030 --> 00:05:48,450
‫Zum Beispiel jetzt auf Zahlen.

111
00:05:48,450 --> 00:05:51,520
‫Kommen wir also zum Durchschnitt der Bewertungen.

112
00:05:51,520 --> 00:05:53,370
‫Und wir wissen, dass die

113
00:05:53,370 --> 00:05:57,330
‫Bewertung immer zwischen eins und null liegen muss, und wir wissen, dass

114
00:05:57,330 --> 00:06:00,880
‫eine Bewertung immer zwischen eins und fünf liegen muss, okay?

115
00:06:00,880 --> 00:06:03,680
‫Und so haben wir, sehr ähnlich wie bei der Mindest-

116
00:06:03,680 --> 00:06:06,253
‫und Höchstlänge, bei Zahlen einfach Min und Max.

117
00:06:08,350 --> 00:06:11,353
‫Also, das Minimum, das wir wollen, ist eins

118
00:06:15,240 --> 00:06:17,253
‫und dann wieder unsere Fehlermeldung.

119
00:06:18,280 --> 00:06:23,280
‫Die Bewertung muss also über 1 liegen. 0, sagen wir.

120
00:06:26,360 --> 00:06:29,643
‫Und dann ist das Maximum fünf.

121
00:06:34,040 --> 00:06:38,660
‫Muss unter 5 sein. 0, okay, und lass uns

122
00:06:38,660 --> 00:06:40,873
‫das auch schnell testen.

123
00:06:43,300 --> 00:06:48,300
‫Wenn wir also eine neue Tour erstellen, nennen wir sie Test Tour

124
00:06:49,390 --> 00:06:53,933
‫Amazing, weil sie eine durchschnittliche Bewertung von sechs hat.

125
00:06:55,020 --> 00:06:57,680
‫Okay, mal sehen, was dann passiert,

126
00:06:57,680 --> 00:07:00,380
‫und tatsächlich muss die Bewertung unter fünf liegen.

127
00:07:00,380 --> 00:07:03,620
‫Okay, das geht wieder nicht

128
00:07:03,620 --> 00:07:06,930
‫und kann natürlich auch nicht Null sein.

129
00:07:06,930 --> 00:07:10,130
‫Also muss es über eins sein, und

130
00:07:10,130 --> 00:07:14,650
‫mit vier wird es natürlich funktionieren, und hier ist tatsächlich unsere Tour.

131
00:07:14,650 --> 00:07:18,180
‫Als nächstes möchte ich diesen Schwierigkeitswert hier auf

132
00:07:18,180 --> 00:07:20,090
‫nur drei Schwierigkeiten beschränken.

133
00:07:20,090 --> 00:07:22,480
‫Also einfach, mittel und schwer.

134
00:07:22,480 --> 00:07:24,660
‫Und wenn der Benutzer etwas anderes eingibt,

135
00:07:24,660 --> 00:07:26,360
‫wird es nicht funktionieren.

136
00:07:26,360 --> 00:07:27,623
‫Also, lass uns das ausprobieren.

137
00:07:32,660 --> 00:07:36,420
‫Der Validator, den wir dafür verwenden, heißt enum, okay, und

138
00:07:36,420 --> 00:07:38,850
‫hier können wir im Grunde

139
00:07:38,850 --> 00:07:41,403
‫genommen ein Array der zulässigen Werte übergeben.

140
00:07:42,570 --> 00:07:47,570
‫Wir haben also leicht, mittel und schwer.

141
00:07:49,550 --> 00:07:53,380
‫Okay, jetzt wollen wir hier auch unsere Fehlermeldung angeben,

142
00:07:53,380 --> 00:07:56,870
‫aber das geht im Moment nicht wirklich, oder?

143
00:07:56,870 --> 00:07:59,490
‫Ich meine, wenn wir hier ein weiteres Argument

144
00:07:59,490 --> 00:08:01,330
‫hinzufügen, dann wäre das

145
00:08:01,330 --> 00:08:05,540
‫nicht für die Fehlermeldung, sondern natürlich für einen weiteren möglichen Wert, okay?

146
00:08:05,540 --> 00:08:08,200
‫Die Lösung, die wir hier tun

147
00:08:08,200 --> 00:08:10,993
‫müssen, besteht darin, hier noch ein weiteres Objekt

148
00:08:11,900 --> 00:08:15,613
‫zu erstellen und dann anzugeben, dass dies hier die Werte sind.

149
00:08:18,870 --> 00:08:23,560
‫Und dann unsere Nachricht, in Ordnung?

150
00:08:23,560 --> 00:08:26,230
‫Und so funktioniert es tatsächlich.

151
00:08:26,230 --> 00:08:29,040
‫Diese Notation hier ist wirklich nur

152
00:08:29,040 --> 00:08:32,763
‫eine Abkürzung für dieses vollständige Objekt hier, in Ordnung?

153
00:08:34,760 --> 00:08:39,760
‫Der Schwierigkeitsgrad ist also entweder: leicht, mittel oder schwer.

154
00:08:45,280 --> 00:08:50,280
‫Okay, und das ist ein sehr schöner, sehr praktischer Validator, der automatisch für

155
00:08:50,323 --> 00:08:53,870
‫alle Strings verfügbar ist, okay, also versuchen Sie nicht,

156
00:08:53,870 --> 00:08:57,348
‫diesen hier zum Beispiel für Zahlen zu verwenden.

157
00:08:57,348 --> 00:08:59,870
‫Dies ist nur für Saiten.

158
00:08:59,870 --> 00:09:02,540
‫Und übrigens, diese Min und Max hier

159
00:09:02,540 --> 00:09:04,450
‫sind eigentlich nicht nur für

160
00:09:04,450 --> 00:09:07,820
‫Zahlen, sondern es wird auch mit Datumsangaben funktionieren, in Ordnung?

161
00:09:07,820 --> 00:09:12,820
‫Wie auch immer, lassen Sie uns das jetzt endlich auch testen.

162
00:09:13,180 --> 00:09:15,399
‫Wir müssen also den Namen ändern, und hier

163
00:09:15,399 --> 00:09:17,249
‫fügen wir etwas anderes hinzu,

164
00:09:20,460 --> 00:09:23,233
‫in Ordnung, und so erhalten wir tatsächlich unseren Fehler.

165
00:09:24,770 --> 00:09:28,080
‫Wenn wir jetzt einfach sagen, dann funktioniert es.

166
00:09:28,080 --> 00:09:30,450
‫Okay, und das war eigentlich alles, was ich

167
00:09:30,450 --> 00:09:31,780
‫Ihnen hier in diesem

168
00:09:31,780 --> 00:09:35,110
‫Vortrag zeigen wollte, aber es gibt tatsächlich noch eine Menge anderer Validatoren.

169
00:09:35,110 --> 00:09:38,259
‫Für Strings haben Sie beispielsweise einen Match-Validator, um

170
00:09:38,259 --> 00:09:40,370
‫zu überprüfen, ob die

171
00:09:40,370 --> 00:09:43,090
‫Eingabe mit einem bestimmten regulären Ausdruck übereinstimmt.

172
00:09:43,090 --> 00:09:46,460
‫Aber ich glaube, dass diese, die ich Ihnen hier gerade

173
00:09:46,460 --> 00:09:49,250
‫gezeigt habe, die wichtigsten eingebauten Validatoren sind.

174
00:09:49,250 --> 00:09:51,450
‫Und für eine vollständige Liste

175
00:09:51,450 --> 00:09:54,530
‫aller davon können Sie natürlich jederzeit die Dokumentation lesen.

176
00:09:54,530 --> 00:09:57,590
‫Jetzt können wir auch unsere eigenen Validatoren spezifizieren und

177
00:09:57,590 --> 00:09:59,790
‫genau das werden wir im nächsten

178
00:09:59,790 --> 00:10:01,363
‫Video gleich machen.

