﻿1
00:00:01,130 --> 00:00:02,940
‫Instructor: Nachdem Sie

2
00:00:02,940 --> 00:00:04,910
‫nun die Grundlagen von Mongoose

3
00:00:04,910 --> 00:00:07,240
‫kennen, indem Sie alle vier korrekten

4
00:00:07,240 --> 00:00:11,440
‫Operationen implementieren, ist es jetzt wichtig, unsere Tourdaten ein wenig besser

5
00:00:11,440 --> 00:00:14,423
‫zu berücksichtigen, um die Touren vollständiger zu machen.

6
00:00:15,990 --> 00:00:20,240
‫Daher können unsere Tourunterlagen an dieser Stelle nur einen Namen, eine

7
00:00:20,240 --> 00:00:22,410
‫Bewertung und einen Preis haben.

8
00:00:22,410 --> 00:00:25,060
‫Aber natürlich brauchen wir hier so viel

9
00:00:25,060 --> 00:00:29,320
‫mehr Daten, denn das Ziel ist es, eine sehr datenreiche API

10
00:00:29,320 --> 00:00:30,940
‫wie diese zu haben.

11
00:00:30,940 --> 00:00:33,390
‫Werfen wir also einen Blick auf die

12
00:00:33,390 --> 00:00:35,453
‫endgültige Version hier als Referenz.

13
00:00:36,660 --> 00:00:39,010
‫Und das ist dieser hier.

14
00:00:39,010 --> 00:00:41,230
‫Und so bekommen wir alle

15
00:00:41,230 --> 00:00:44,330
‫Touren und es wird ein bisschen so aussehen.

16
00:00:44,330 --> 00:00:46,620
‫Okay, Sie sehen also, dass wir

17
00:00:46,620 --> 00:00:49,750
‫auf jeder Tour einen Startort haben, wir haben den Durchschnitt

18
00:00:49,750 --> 00:00:52,543
‫der Bewertungen, die Anzahl der Bewertungen, Bilder, Startdaten.

19
00:00:53,410 --> 00:00:57,400
‫Guides, Name, Dauer, maximale Gruppengröße, Schwierigkeit,

20
00:00:57,400 --> 00:00:58,910
‫Preis,

21
00:00:58,910 --> 00:01:01,323
‫Zusammenfassung, Beschreibung, Bildcover, Orte.

22
00:01:02,930 --> 00:01:07,930
‫Auch eine Schnecke, Bewertungen, Dauer in Wochen und die ID.

23
00:01:07,960 --> 00:01:10,070
‫Sie sehen also viele Daten,

24
00:01:10,070 --> 00:01:12,860
‫und wir werden hier nicht alle Daten in

25
00:01:12,860 --> 00:01:14,260
‫diesem Vortrag hinzufügen.

26
00:01:14,260 --> 00:01:17,750
‫Es gibt einige Teile, die wir noch nicht

27
00:01:17,750 --> 00:01:22,330
‫hinzufügen können, aber wir können es natürlich etwas vollständiger machen, okay?

28
00:01:22,330 --> 00:01:27,193
‫Und lass uns das hier tatsächlich als Referenz speichern und alle

29
00:01:30,560 --> 00:01:33,550
‫Touren abrufen, und ich werde es

30
00:01:34,630 --> 00:01:36,770
‫außerhalb jedes Ordners legen.

31
00:01:36,770 --> 00:01:39,643
‫Also lass es uns einfach hier oben setzen.

32
00:01:40,810 --> 00:01:43,310
‫Und das funktioniert aus irgendeinem Grund nicht.

33
00:01:43,310 --> 00:01:45,060
‫Okay, dann legen wir es einfach hier.

34
00:01:47,680 --> 00:01:50,903
‫Okay, fangen wir an, das ist

35
00:01:52,390 --> 00:01:53,550
‫richtig.

36
00:01:53,550 --> 00:01:55,570
‫Und deshalb belasse ich es hier,

37
00:01:55,570 --> 00:01:58,400
‫um das, was wir haben, immer wieder mit dem

38
00:01:58,400 --> 00:02:00,330
‫zu vergleichen, was wir anstreben.

39
00:02:00,330 --> 00:02:02,870
‫Lassen Sie uns also trotzdem zurückgehen und mit

40
00:02:02,870 --> 00:02:05,250
‫dem beginnen, was wir bereits haben, und wir

41
00:02:05,250 --> 00:02:06,560
‫haben den Namen.

42
00:02:06,560 --> 00:02:08,520
‫Und das ist schon gut

43
00:02:08,520 --> 00:02:11,000
‫genug, also belasse ich es jetzt so.

44
00:02:11,000 --> 00:02:16,000
‫Also der Name, dann wollen wir auch eine Dauer.

45
00:02:19,780 --> 00:02:24,780
‫Und diese Dauer ist eine Zahl, und sie ist erforderlich.

46
00:02:26,570 --> 00:02:29,990
‫Setzen Sie es also auf true, und dann

47
00:02:29,990 --> 00:02:33,603
‫lautet die Meldung, eine Tour muss eine Dauer haben.

48
00:02:35,100 --> 00:02:38,450
‫Diese erforderlichen Validatoren hier sind im Grunde die

49
00:02:38,450 --> 00:02:40,870
‫einzigen Validatoren, die ich vorerst

50
00:02:40,870 --> 00:02:43,920
‫zu jedem dieser Felder hier hinzufügen werde.

51
00:02:43,920 --> 00:02:46,120
‫Später, wenn wir ausführlicher über

52
00:02:46,120 --> 00:02:48,790
‫Validatoren sprechen, werden wir noch viel mehr hinzufügen.

53
00:02:48,790 --> 00:02:50,700
‫Aber auch hier möchte

54
00:02:50,700 --> 00:02:54,150
‫ich vorerst nur einige dieser Felder, nicht alle, erforderlich machen.

55
00:02:54,150 --> 00:02:56,110
‫Als nächstes haben wir die Gruppengröße.

56
00:02:56,110 --> 00:02:58,640
‫Also grundsätzlich, wie viele Personen maximal

57
00:02:58,640 --> 00:03:01,030
‫an einer Tour teilnehmen können.

58
00:03:01,030 --> 00:03:03,560
‫Und so nenne ich das maxGroupSize.

59
00:03:06,530 --> 00:03:09,793
‫Und damit sollte wieder

60
00:03:12,330 --> 00:03:17,070
‫eine Zahl sein, und es ist wieder erforderlich.

61
00:03:17,070 --> 00:03:22,070
‫Die Tour muss eine Gruppengröße haben.

62
00:03:24,150 --> 00:03:25,900
‫Vergiss das Komma hier nicht.

63
00:03:25,900 --> 00:03:28,653
‫Als nächstes brauchen wir auch eine Schwierigkeit.

64
00:03:36,010 --> 00:03:39,470
‫Und dieser ist ein String, und später werden wir

65
00:03:39,470 --> 00:03:42,080
‫definieren, dass er entweder mittel, leicht oder

66
00:03:42,080 --> 00:03:44,920
‫schwierig sein sollte, aber auch das ist

67
00:03:44,920 --> 00:03:47,040
‫eigentlich ein Validator, und

68
00:03:47,040 --> 00:03:50,130
‫ich werde das für eine spätere Zeit belassen.

69
00:03:50,130 --> 00:03:52,440
‫Okay, im Moment sage ich nur,

70
00:03:52,440 --> 00:03:54,423
‫dass es Schwierigkeiten haben sollte.

71
00:03:58,640 --> 00:04:02,100
‫Kommen wir als nächstes zu den Bewertungen.

72
00:04:02,100 --> 00:04:05,010
‫Im Moment haben wir also ein Feld namens Rating,

73
00:04:05,010 --> 00:04:07,080
‫aber in Wirklichkeit möchten wir ein

74
00:04:07,080 --> 00:04:08,610
‫Feld für den Bewertungsdurchschnitt

75
00:04:08,610 --> 00:04:10,930
‫und ein Feld für die Bewertungsmenge haben.

76
00:04:10,930 --> 00:04:13,620
‫Also im Grunde die Anzahl der Bewertungen, die es gibt.

77
00:04:13,620 --> 00:04:17,430
‫Später wird es eine weitere Ressource namens Rezensionen geben,

78
00:04:17,430 --> 00:04:20,080
‫in der Benutzer Rezensionen zu Touren

79
00:04:20,080 --> 00:04:22,330
‫schreiben und Bewertungen abgeben können.

80
00:04:22,330 --> 00:04:25,030
‫Und das wird eine ganz andere Ressource und

81
00:04:25,030 --> 00:04:27,060
‫ein ganz anderes Modell sein.

82
00:04:27,060 --> 00:04:29,770
‫Aber dennoch möchten wir im Grunde eine

83
00:04:29,770 --> 00:04:33,660
‫Zusammenfassung dieser Bewertungen und dieser Bewertungen hier in den Touren haben.

84
00:04:33,660 --> 00:04:36,630
‫In Ordnung, und die Gründe dafür werden Sie

85
00:04:36,630 --> 00:04:41,240
‫etwas später erfahren, sobald wir damit beginnen, wie und warum wir Daten in

86
00:04:41,240 --> 00:04:43,900
‫NoSQL-Datenbanken und speziell in MongoDB modellieren.

87
00:04:43,900 --> 00:04:47,913
‫Okay, jetzt fügen wir einfach den Bewertungsdurchschnitt und

88
00:04:49,150 --> 00:04:50,920
‫die Bewertungsmenge hinzu.

89
00:04:50,920 --> 00:04:53,220
‫Okay, also belassen wir dies

90
00:04:53,220 --> 00:04:54,643
‫hier als Zahl,

91
00:04:55,500 --> 00:04:58,590
‫und mit dieser Vorgabe und der Bewertungsquantität, ratingsQuantity.

92
00:05:00,930 --> 00:05:03,803
‫Das sollte natürlich auch eine Zahl sein,

93
00:05:06,490 --> 00:05:09,160
‫und der Standardwert ist Null.

94
00:05:09,160 --> 00:05:11,060
‫Denn natürlich wird es am

95
00:05:11,060 --> 00:05:14,183
‫Anfang absolut keine Bewertungen geben, wenn die Tour neu ist.

96
00:05:15,590 --> 00:05:18,680
‫Jetzt habe ich diesen beiden Eigenschaften hier

97
00:05:18,680 --> 00:05:21,580
‫keinen erforderlichen Wert gegeben, weil nicht der

98
00:05:21,580 --> 00:05:22,960
‫Benutzer, der

99
00:05:22,960 --> 00:05:26,100
‫diese Touren erstellt, diese Werte tatsächlich vorgibt, oder?

100
00:05:26,100 --> 00:05:27,720
‫Wenn wir also

101
00:05:27,720 --> 00:05:30,310
‫eine neue Tour erstellen, werden wir weder

102
00:05:30,310 --> 00:05:32,260
‫den Durchschnitt der Bewertungen noch

103
00:05:32,260 --> 00:05:34,720
‫die Anzahl der Bewertungen angeben, da dies

104
00:05:34,720 --> 00:05:37,570
‫später aus den echten Bewertungen berechnet wird, okay?

105
00:05:37,570 --> 00:05:40,040
‫Als nächstes haben wir den Preis hier,

106
00:05:40,040 --> 00:05:41,920
‫also ist das in Ordnung,

107
00:05:41,920 --> 00:05:44,403
‫und wir haben möglicherweise auch einen Rabatt.

108
00:05:45,390 --> 00:05:47,110
‫Nehmen wir also

109
00:05:47,110 --> 00:05:51,260
‫an, diese Firma, also Natours, möchte irgendwann auf eine der Touren

110
00:05:51,260 --> 00:05:53,250
‫einen Rabatt geben und kann

111
00:05:53,250 --> 00:05:55,463
‫daher auch hier einen Rabattpreis angeben.

112
00:05:57,090 --> 00:06:00,850
‫Also priceDiscount, und so setzen wir es einfach hier auf Nummer.

113
00:06:00,850 --> 00:06:03,220
‫Wir brauchen hier keine Schematypoptionen.

114
00:06:03,220 --> 00:06:04,970
‫Zum Beispiel ist es nicht

115
00:06:04,970 --> 00:06:07,270
‫erforderlich, also lassen wir es vorerst einfach so.

116
00:06:08,170 --> 00:06:12,313
‫Als nächstes können wir eine Zusammenfassung der Tour angeben.

117
00:06:14,120 --> 00:06:17,283
‫Die Zusammenfassung ist also vom Typ String.

118
00:06:19,250 --> 00:06:22,040
‫Aber ich werde es nicht wirklich erforderlich machen.

119
00:06:22,040 --> 00:06:24,540
‫Okay, und das liegt einfach daran, dass

120
00:06:24,540 --> 00:06:27,070
‫es nicht auf der Titelseite unserer Website steht.

121
00:06:27,070 --> 00:06:29,940
‫Okay, im Grunde ist es nicht in der Übersicht.

122
00:06:29,940 --> 00:06:31,800
‫Und das werde ich Ihnen gleich

123
00:06:31,800 --> 00:06:33,070
‫zeigen, aber lassen Sie

124
00:06:33,070 --> 00:06:36,330
‫mich hier nur eine weitere Schematypoption hinzufügen, die ich Ihnen noch

125
00:06:36,330 --> 00:06:37,910
‫nicht gezeigt habe, nämlich trimmen.

126
00:06:37,910 --> 00:06:40,513
‫Und Trim funktioniert nur für Saiten.

127
00:06:41,820 --> 00:06:43,650
‫Und ich werde es auf true setzen.

128
00:06:43,650 --> 00:06:46,710
‫Denken Sie also daran, wie ich sagte, dass es

129
00:06:46,710 --> 00:06:49,030
‫hier verschiedene Schematypen für verschiedene Typen

130
00:06:49,030 --> 00:06:52,320
‫gibt, und für string haben wir einen Schematyp, der

131
00:06:52,320 --> 00:06:54,430
‫trim ist, der alle Leerzeichen

132
00:06:54,430 --> 00:06:57,310
‫am Anfang und am Ende des Strings entfernt.

133
00:06:57,310 --> 00:07:00,363
‫Okay, und wenn also zum Beispiel

134
00:07:01,570 --> 00:07:06,360
‫jemand an dieser Tour teilnimmt, bla bla, ist es egal.

135
00:07:06,360 --> 00:07:08,720
‫Wenn also jemand dies eingibt, werden

136
00:07:08,720 --> 00:07:10,940
‫all diese Leerzeichen am

137
00:07:10,940 --> 00:07:13,473
‫Ende und am Anfang hier abgeschnitten.

138
00:07:15,190 --> 00:07:17,870
‫Und eigentlich können wir hier zum Beispiel das Gleiche auf

139
00:07:17,870 --> 00:07:19,003
‫den Namen legen.

140
00:07:20,810 --> 00:07:22,223
‫Gut, warum nicht?

141
00:07:23,350 --> 00:07:24,720
‫Also lassen wir es so.

142
00:07:24,720 --> 00:07:27,430
‫Hier sehe ich, dass es eigentlich Dauer heißt,

143
00:07:27,430 --> 00:07:28,403
‫nicht Dauer.

144
00:07:30,450 --> 00:07:35,240
‫Okay, das ist die Zusammenfassung, die auch falsch geschrieben ist.

145
00:07:35,240 --> 00:07:37,110
‫Also eine Zusammenfassung wie diese.

146
00:07:37,110 --> 00:07:38,977
‫Ach ja, jetzt wollte ich euch

147
00:07:38,977 --> 00:07:40,633
‫eigentlich die Natours-Website zeigen.

148
00:07:42,090 --> 00:07:44,593
‫Das ist also zurück zu unserer Mongoose-Dokumentation.

149
00:07:46,890 --> 00:07:48,890
‫Aber das ist es, was ich Ihnen zeigen möchte.

150
00:07:48,890 --> 00:07:53,540
‫Also Natours. dev, das ist das Original dieser Anwendung,

151
00:07:53,540 --> 00:07:56,740
‫und das sind die Daten, die wir in unserer API haben

152
00:07:56,740 --> 00:07:59,380
‫und die wir natürlich auch in der Datenbank benötigen.

153
00:07:59,380 --> 00:08:00,770
‫Wir haben also alle diese Daten.

154
00:08:00,770 --> 00:08:05,260
‫Also dieser Tourname, wir haben den Schwierigkeitsgrad, wir haben die Dauer,

155
00:08:05,260 --> 00:08:07,800
‫wir haben, dies ist eine Zusammenfassung,

156
00:08:07,800 --> 00:08:10,930
‫dann haben wir einen Startort, wir haben die

157
00:08:10,930 --> 00:08:13,050
‫Anzahl der Orte, wir haben

158
00:08:13,050 --> 00:08:14,800
‫ein Startdatum, wir

159
00:08:14,800 --> 00:08:17,602
‫haben die maximale Gruppengröße in hier, und

160
00:08:17,602 --> 00:08:19,810
‫wir müssen den Bewertungsdurchschnitt, die

161
00:08:19,810 --> 00:08:21,193
‫Bewertungsmenge bepreisen.

162
00:08:22,050 --> 00:08:23,683
‫Auch hier haben wir ein Bild.

163
00:08:24,600 --> 00:08:27,833
‫Und dann hier auf der Detailseite haben wir

164
00:08:30,045 --> 00:08:32,120
‫die Zusammenfassung hier unten.

165
00:08:32,120 --> 00:08:36,330
‫Wir haben die Anleitungen, die ich Ihnen gerade in Postman gezeigt habe.

166
00:08:36,330 --> 00:08:38,080
‫Wir haben noch ein paar Bilder.

167
00:08:38,080 --> 00:08:40,970
‫Wir haben hier alle Standorte und wir

168
00:08:40,970 --> 00:08:42,673
‫haben alle Bewertungen.

169
00:08:44,220 --> 00:08:47,570
‫Okay, wie gesagt, nicht alle Daten befinden

170
00:08:47,570 --> 00:08:51,340
‫sich auf der Übersichtsseite und daher sind

171
00:08:51,340 --> 00:08:54,500
‫auch nicht alle Daten erforderlich.

172
00:08:54,500 --> 00:08:57,623
‫Okay, also lass uns hierher zurückkehren.

173
00:08:58,490 --> 00:09:01,333
‫Als nächstes möchte ich eine Beschreibung hinzufügen.

174
00:09:06,510 --> 00:09:10,283
‫Und dies ist eine Art von String, und lassen Sie

175
00:09:11,850 --> 00:09:14,740
‫uns trim wieder auf true setzen.

176
00:09:14,740 --> 00:09:16,520
‫Und ich habe mich gerade daran

177
00:09:16,520 --> 00:09:19,250
‫erinnert, dass sich die Zusammenfassung tatsächlich auf der Übersichtsseite befindet.

178
00:09:19,250 --> 00:09:22,280
‫Und so machen wir dieses erforderlich.

179
00:09:22,280 --> 00:09:24,223
‫Also fügt man hier

180
00:09:27,010 --> 00:09:27,843
‫am

181
00:09:30,220 --> 00:09:34,010
‫Ende hinzu, dass eine Tour eine Beschreibung haben muss.

182
00:09:34,010 --> 00:09:39,010
‫Okay, als nächstes werden wir das imageCover angeben.

183
00:09:42,344 --> 00:09:45,320
‫Und das sind die Bilder, die Sie auf der Übersichtsseite sehen,

184
00:09:45,320 --> 00:09:48,463
‫und lassen Sie uns dieses so einstellen, dass es diese Rolle tatsächlich benötigt.

185
00:09:50,060 --> 00:09:52,880
‫Der Typ sollte also string sein, denn

186
00:09:52,880 --> 00:09:55,670
‫im Grunde ist dies hier einfach der

187
00:09:55,670 --> 00:09:57,860
‫Name des Bildes, das

188
00:09:57,860 --> 00:10:01,050
‫wir dann später aus dem Dateisystem lesen können.

189
00:10:01,050 --> 00:10:03,850
‫Okay, also wirklich nur der Name des Bildes.

190
00:10:03,850 --> 00:10:07,040
‫Grundsätzlich wird also eine Referenz in der Datenbank gespeichert.

191
00:10:07,040 --> 00:10:09,530
‫Und das ist eine sehr gängige Praxis, okay?

192
00:10:09,530 --> 00:10:13,270
‫Wir könnten also auch das gesamte Bild in einer Datenbank speichern, aber

193
00:10:13,270 --> 00:10:15,400
‫das ist normalerweise keine gute Idee.

194
00:10:15,400 --> 00:10:18,860
‫Wir belassen die Bilder einfach irgendwo im Dateisystem und tragen dann

195
00:10:18,860 --> 00:10:21,340
‫den Namen des Bildes selbst als Feld

196
00:10:21,340 --> 00:10:22,823
‫in die Datenbank ein.

197
00:10:24,370 --> 00:10:27,493
‫Stellen Sie es also auf

198
00:10:28,560 --> 00:10:32,990
‫Erforderlich ein. Eine Tour muss ein Titelbild haben.

199
00:10:32,990 --> 00:10:36,550
‫Schön, das nächste ist der Rest der Bilder.

200
00:10:36,550 --> 00:10:39,810
‫Und jetzt haben wir hier etwas Neues, okay?

201
00:10:39,810 --> 00:10:41,740
‫Weil wir mehrere Bilder haben

202
00:10:41,740 --> 00:10:44,750
‫und ich diese Bilder als Array speichern möchte.

203
00:10:44,750 --> 00:10:47,010
‫Und zwar als Array von Strings.

204
00:10:47,010 --> 00:10:50,110
‫Der Weg, dies zu tun, besteht

205
00:10:50,110 --> 00:10:54,260
‫darin, hier einfach ein Array von Strings anzugeben, einfach so.

206
00:10:54,260 --> 00:10:57,330
‫Ich möchte also, dass es immer noch vom Typ string ist, aber

207
00:10:57,330 --> 00:10:59,230
‫ich möchte, dass es ein Array ist.

208
00:10:59,230 --> 00:11:02,580
‫Also ein Array, in dem wir eine Reihe von Strings haben.

209
00:11:02,580 --> 00:11:06,441
‫Und so kann ich das definieren, okay?

210
00:11:06,441 --> 00:11:09,100
‫Und das werden wir später wieder für etwas anderes verwenden.

211
00:11:09,100 --> 00:11:11,750
‫Und so werden wir dann tatsächlich

212
00:11:11,750 --> 00:11:14,680
‫mehr Schematyp-Optionen als nur einen Typ übergeben, und

213
00:11:14,680 --> 00:11:18,660
‫dann werden wir das bis dahin wieder verwenden, in Ordnung?

214
00:11:18,660 --> 00:11:21,170
‫Aber lassen Sie uns vorerst weitermachen,

215
00:11:21,170 --> 00:11:23,970
‫und das nächste Feld, das ich hier

216
00:11:23,970 --> 00:11:26,207
‫hinzufügen wollte, ist das createdAt.

217
00:11:26,207 --> 00:11:29,230
‫Und das Feld createdAt sollte im Grunde ein

218
00:11:29,230 --> 00:11:33,290
‫Zeitstempel sein, der gesetzt wird, wenn der Benutzer eine neue Tour erhält.

219
00:11:33,290 --> 00:11:36,433
‫Also sollte dies hier natürlich automatisch hinzugefügt werden.

220
00:11:37,660 --> 00:11:40,580
‫Auch hier zum Zeitpunkt der Erstellung der Tour.

221
00:11:40,580 --> 00:11:42,580
‫Also, wie machen wir das?

222
00:11:42,580 --> 00:11:46,560
‫Als erstes setzen wir den Typ auf Date.

223
00:11:46,560 --> 00:11:50,840
‫Data ist also ein weiterer in JavaScript integrierter Datentyp, den wir

224
00:11:50,840 --> 00:11:52,253
‫hier verwenden können.

225
00:11:53,510 --> 00:11:56,210
‫Okay, der Typ ist also Date, und

226
00:11:56,210 --> 00:11:59,010
‫dann müssen wir einfach einen Standard festlegen, und

227
00:11:59,010 --> 00:12:00,840
‫der Standard ist die

228
00:12:00,840 --> 00:12:04,870
‫in JavaScript integrierte Funktion Date. jetzt.

229
00:12:04,870 --> 00:12:07,570
‫Und dieses ist Ihnen sicher bekannt.

230
00:12:07,570 --> 00:12:11,390
‫Dadurch erhalten wir einfach einen Zeitstempel in Millisekunden,

231
00:12:11,390 --> 00:12:15,140
‫der im Wesentlichen die aktuelle Millisekunde darstellt.

232
00:12:15,140 --> 00:12:16,740
‫In Ordnung, jetzt

233
00:12:16,740 --> 00:12:20,390
‫in Mongo wird dies jetzt sofort in das heutige

234
00:12:20,390 --> 00:12:24,153
‫Datum umgewandelt, um diese Daten besser zu verstehen, okay?

235
00:12:25,650 --> 00:12:30,650
‫Also ja, das ist der automatisch erstellte Zeitstempel.

236
00:12:30,900 --> 00:12:35,900
‫Und jetzt müssen wir endlich auch noch eine Reihe von Daten eingeben.

237
00:12:36,400 --> 00:12:38,650
‫Und nun zum Schluss,

238
00:12:38,650 --> 00:12:43,033
‫wir wollen auch noch eine Reihe von Startterminen definieren.

239
00:12:44,836 --> 00:12:49,500
‫Also startDates, und wieder definieren wir einfach ein Array und sagen

240
00:12:49,500 --> 00:12:52,470
‫dann, dass wir dort Datumsangaben haben wollen.

241
00:12:52,470 --> 00:12:56,240
‫Okay, diese startDates sind im Grunde unterschiedliche Daten, an

242
00:12:56,240 --> 00:12:58,400
‫denen eine Tour beginnt.

243
00:12:58,400 --> 00:13:00,540
‫Zum Beispiel können wir eine Tour

244
00:13:00,540 --> 00:13:02,280
‫beginnen im Dezember

245
00:13:02,280 --> 00:13:04,660
‫dieses Jahres und dann im Februar,

246
00:13:04,660 --> 00:13:06,580
‫im nächsten Jahr und dann

247
00:13:06,580 --> 00:13:09,160
‫eine weitere im Sommer, und so sind

248
00:13:09,160 --> 00:13:11,030
‫unterschiedliche Daten für dieselbe Tour

249
00:13:11,030 --> 00:13:14,550
‫einfach unterschiedlich, sagen wir, Beispiele der Tour ab verschiedenen Terminen.

250
00:13:14,550 --> 00:13:16,610
‫Okay, ich hoffe das macht Sinn.

251
00:13:16,610 --> 00:13:19,730
‫Wie auch immer, dieser hier wird nicht automatisch

252
00:13:19,730 --> 00:13:23,360
‫von MongoDB erstellt, und MongoDB wird dann automatisch versuchen,

253
00:13:23,360 --> 00:13:27,000
‫den String, den wir als Datum übergeben haben, in ein

254
00:13:27,000 --> 00:13:28,930
‫echtes JavaScript-Datum zu parsen.

255
00:13:28,930 --> 00:13:31,790
‫Zum Beispiel könnten wir so etwas

256
00:13:31,790 --> 00:13:36,580
‫wie sagen wir 2021, den 21. März, übergeben, und

257
00:13:36,580 --> 00:13:39,150
‫Mongo würde dies dann automatisch

258
00:13:39,150 --> 00:13:41,199
‫als Datum analysieren.

259
00:13:41,199 --> 00:13:42,820
‫Sie können auch das Datum angeben.

260
00:13:42,820 --> 00:13:47,820
‫Sagen Sie zum Beispiel 11 und 32 Minuten, in Ordnung.

261
00:13:48,210 --> 00:13:51,800
‫Oder wir könnten auch einfach einen Unix-Zeitstempel eingeben, also

262
00:13:51,800 --> 00:13:54,610
‫einen Zeitstempel wie in diesem Format hier.

263
00:13:54,610 --> 00:13:56,970
‫Okay, und alle diese Formate werden

264
00:13:56,970 --> 00:14:01,200
‫von Mongo im Grunde genommen versuchen, sie in ein Datum zu parsen.

265
00:14:01,200 --> 00:14:03,853
‫Und nur wenn dies nicht möglich ist, wird ein Fehler ausgegeben.

266
00:14:04,762 --> 00:14:06,980
‫(atmet aus) Das war also eine Menge Arbeit.

267
00:14:06,980 --> 00:14:08,730
‫Lassen Sie uns hier sparen.

268
00:14:08,730 --> 00:14:11,530
‫Und der Weg, wie wir das dann ausprobieren können, ist,

269
00:14:11,530 --> 00:14:13,850
‫hier zu unseren Dev-Daten zu gehen, wo wir

270
00:14:13,850 --> 00:14:16,380
‫diese Tour-Simple haben. json-Datei, die

271
00:14:16,380 --> 00:14:19,343
‫wir in einem vorherigen Abschnitt verwendet haben.

272
00:14:20,370 --> 00:14:21,790
‫Gut.

273
00:14:21,790 --> 00:14:23,190
‫Also alles, was

274
00:14:23,190 --> 00:14:26,023
‫ich hier tun werde, ist, all diese Daten

275
00:14:28,070 --> 00:14:33,070
‫hier zu sammeln und diese dann zu verwenden, um eine neue Anfrage zu erstellen, okay?

276
00:14:34,920 --> 00:14:38,170
‫Wir wollen hier also eine neue POST-Anfrage erstellen, und zwar

277
00:14:38,170 --> 00:14:39,500
‫mit all diesen

278
00:14:39,500 --> 00:14:41,650
‫Daten, anstatt sie manuell ausschreiben zu müssen.

279
00:14:42,660 --> 00:14:44,920
‫Okay, also füge das alles hier ein.

280
00:14:46,320 --> 00:14:49,580
‫Und jetzt brauchen wir die ID tatsächlich nicht.

281
00:14:49,580 --> 00:14:50,750
‫Wir brauchten es

282
00:14:50,750 --> 00:14:53,620
‫also früher, als wir unsere dateibasierte API erstellten,

283
00:14:53,620 --> 00:14:57,200
‫aber das ist jetzt vorbei, also lassen Sie uns das los.

284
00:14:57,200 --> 00:14:58,690
‫Und so sind alle

285
00:14:58,690 --> 00:15:02,250
‫restlichen Daten, die wir als erforderlich markiert haben, jetzt tatsächlich hier

286
00:15:02,250 --> 00:15:03,910
‫und sogar noch einige mehr.

287
00:15:03,910 --> 00:15:07,593
‫Versuchen wir also zu sehen, was passiert, wenn wir dies einreichen.

288
00:15:08,500 --> 00:15:10,823
‫Und jetzt bekommen wir ungültige Daten gesendet.

289
00:15:11,900 --> 00:15:16,450
‫Gehen wir also tatsächlich zu unserem Tour-Controller, und hier, wo

290
00:15:16,450 --> 00:15:19,630
‫wir eine Tour erstellen, gehen wir anstelle

291
00:15:19,630 --> 00:15:22,610
‫dieser Nachricht tatsächlich zurück wie zuvor und

292
00:15:22,610 --> 00:15:25,840
‫senden den gesamten Fehler, nur damit wir

293
00:15:26,780 --> 00:15:29,633
‫sehen, was tatsächlich schief läuft.

294
00:15:30,800 --> 00:15:34,580
‫Also schick es hierher, okay, und das Problem war, dass

295
00:15:34,580 --> 00:15:37,483
‫wir The Snow Adventure bereits definiert haben.

296
00:15:38,550 --> 00:15:41,060
‫Also lass uns das erstmal loswerden.

297
00:15:41,060 --> 00:15:43,240
‫Ja, hier haben wir also

298
00:15:43,240 --> 00:15:45,650
‫The Snow Adventure, also sollten wir

299
00:15:45,650 --> 00:15:49,130
‫dies löschen, und dafür verwende ich unsere eigene API,

300
00:15:49,130 --> 00:15:51,713
‫damit wir sie hier bereits verwenden können.

301
00:15:53,100 --> 00:15:54,860
‫Damit sollte jetzt einer weg sein,

302
00:15:54,860 --> 00:15:58,690
‫und so sollten wir jetzt in der Lage sein, dies als neue Tour hinzuzufügen.

303
00:15:58,690 --> 00:16:01,590
‫Und tatsächlich ist es jetzt da.

304
00:16:01,590 --> 00:16:05,040
‫Hier sind also alle Daten, die wir gerade

305
00:16:05,040 --> 00:16:08,160
‫in diesem schönen Format angegeben haben.

306
00:16:08,160 --> 00:16:10,580
‫Was jetzt interessant ist, ist, den

307
00:16:10,580 --> 00:16:12,650
‫Zeitstempel "createdAt" tatsächlich zu sehen.

308
00:16:12,650 --> 00:16:16,770
‫Genau zu diesem Zeitpunkt nehme ich dieses Video auf.

309
00:16:16,770 --> 00:16:19,480
‫Und so wurde dieser natürlich

310
00:16:19,480 --> 00:16:23,880
‫automatisch von diesem Codestück erstellt, das wir hier irgendwo haben.

311
00:16:23,880 --> 00:16:24,853
‫Ja, das.

312
00:16:25,970 --> 00:16:30,000
‫Dieses Datum kommt also von diesem Datum. jetzt einen Zeitstempel,

313
00:16:30,000 --> 00:16:32,970
‫den JavaScript dann automatisch auf

314
00:16:32,970 --> 00:16:36,120
‫dieses schöne und lesbare Datum analysiert.

315
00:16:36,120 --> 00:16:39,290
‫Dann haben wir hier diese Arrays.

316
00:16:39,290 --> 00:16:41,407
‫Okay, also dieses Array und

317
00:16:41,407 --> 00:16:45,403
‫ein weiteres Array und natürlich die automatisch generierte ID, in Ordnung?

318
00:16:46,740 --> 00:16:48,560
‫Wenn wir also jetzt hierher

319
00:16:48,560 --> 00:16:50,940
‫kommen, haben wir dann natürlich drei Touren.

320
00:16:50,940 --> 00:16:54,340
‫Zuerst die anderen, die nicht so vollständig sind,

321
00:16:54,340 --> 00:16:56,510
‫und dann alle diese.

322
00:16:56,510 --> 00:16:59,450
‫Was hier interessant ist, ist, dass

323
00:16:59,450 --> 00:17:04,050
‫Mongo auch die Touren, die wir bereits hatten, aktualisiert hat.

324
00:17:04,050 --> 00:17:06,290
‫Zum Beispiel hatten wir hier

325
00:17:06,290 --> 00:17:08,750
‫eine Bewertung, aber jetzt, da sich unser

326
00:17:08,750 --> 00:17:11,310
‫Schema vollständig geändert hat, hat es diesen

327
00:17:11,310 --> 00:17:15,600
‫Bewertungsdurchschnitt und auch diese Bewertungsmenge hinzugefügt, beide zu ihren Standardeinstellungen, und

328
00:17:15,600 --> 00:17:17,023
‫hier tatsächlich dasselbe.

329
00:17:17,990 --> 00:17:20,410
‫Es hat auch diesen Zeitstempel erstellt.

330
00:17:20,410 --> 00:17:25,210
‫Es hat, ja, es hat Bilder und Startdaten mit diesen

331
00:17:25,210 --> 00:17:27,080
‫leeren Arrays erstellt.

332
00:17:27,080 --> 00:17:29,373
‫Und so hat es all diese Daten hier irgendwie geändert.

333
00:17:30,240 --> 00:17:32,830
‫In Ordnung, und bevor wir mit einem

334
00:17:32,830 --> 00:17:34,460
‫Projekt fortfahren, sollten wir

335
00:17:34,460 --> 00:17:36,863
‫wahrscheinlich alle diese Daten hier löschen.

336
00:17:38,380 --> 00:17:40,800
‫Und tatsächlich, was wir im nächsten

337
00:17:40,800 --> 00:17:43,660
‫Video tun werden, nachdem unser Modell zumindest für

338
00:17:43,660 --> 00:17:45,250
‫diesen Abschnitt endlich

339
00:17:45,250 --> 00:17:47,410
‫fertig ist, werden wir ein

340
00:17:47,410 --> 00:17:50,060
‫kleines Skript schreiben, das automatisch alle Touren

341
00:17:50,060 --> 00:17:51,713
‫aus diesen JSON-Daten importiert.

342
00:17:52,550 --> 00:17:55,090
‫Okay, eigentlich aus dieser JSON-Datei.

343
00:17:55,090 --> 00:17:57,170
‫Es wird also im Grunde

344
00:17:57,170 --> 00:18:00,800
‫die Datei lesen, alle Touren abrufen und in die Datenbank importieren.

345
00:18:00,800 --> 00:18:03,830
‫Okay, das machen wir als nächstes, denn das

346
00:18:03,830 --> 00:18:06,160
‫wird in diesem Abschnitt und auch

347
00:18:06,160 --> 00:18:08,163
‫in Zukunft sehr nützlich sein.

