﻿1
00:00:01,300 --> 00:00:03,180
‫Kursleiter: Erinnern Sie sich daran, dass

2
00:00:03,180 --> 00:00:06,500
‫wir auf jedem Tourdokument ein Feld für die durchschnittliche Bewertung haben?

3
00:00:06,500 --> 00:00:09,860
‫Bis jetzt enthält dieses Feld keine

4
00:00:09,860 --> 00:00:12,110
‫wirklich aussagekräftigen Daten, oder?

5
00:00:12,110 --> 00:00:14,290
‫Aber lassen Sie uns das

6
00:00:14,290 --> 00:00:17,233
‫nun tatsächlich ändern und in diesem Vortrag Durchschnittsbewertungen berechnen.

7
00:00:18,920 --> 00:00:22,410
‫Das Speichern einer Zusammenfassung eines verwandten Datensatzes

8
00:00:22,410 --> 00:00:26,270
‫im Hauptdatensatz ist also tatsächlich eine sehr beliebte Technik

9
00:00:26,270 --> 00:00:29,900
‫in der Datenmodellierung, die ich noch nicht erwähnt hatte.

10
00:00:29,900 --> 00:00:32,720
‫Und diese Technik kann tatsächlich sehr hilfreich

11
00:00:32,720 --> 00:00:34,750
‫sein, um ständige Abfragen

12
00:00:34,750 --> 00:00:36,890
‫des zugehörigen Datensatzes zu verhindern.

13
00:00:36,890 --> 00:00:40,110
‫In unserer Anwendung ist ein großartiges Beispiel für diese

14
00:00:40,110 --> 00:00:43,320
‫Technik, die durchschnittliche Bewertung und die Anzahl der Bewertungen

15
00:00:43,320 --> 00:00:46,870
‫für jede Tour zu speichern, damit wir die Bewertungen nicht jedes

16
00:00:46,870 --> 00:00:49,860
‫Mal abfragen und diesen Durchschnitt berechnen müssen, wenn

17
00:00:49,860 --> 00:00:52,150
‫wir für alle Touren abfragen. okay.

18
00:00:52,150 --> 00:00:54,380
‫Das könnte zum Beispiel für

19
00:00:54,380 --> 00:00:57,280
‫eine Tourübersichtsseite in unserem Frontend sehr nützlich sein,

20
00:00:57,280 --> 00:01:00,320
‫wo wir wirklich nicht alle Bewertungen anzeigen möchten,

21
00:01:00,320 --> 00:01:03,350
‫aber dennoch eine Zusammenfassung dieser Bewertungen anzeigen möchten,

22
00:01:03,350 --> 00:01:06,730
‫wie zum Beispiel die Anzahl der Bewertungen und der Durchschnitt.

23
00:01:06,730 --> 00:01:09,130
‫Und eigentlich haben wir die Felder dafür schon

24
00:01:09,130 --> 00:01:10,433
‫in unserem Tourenschema.

25
00:01:11,450 --> 00:01:15,870
‫Also gleich hier am Anfang, denke ich.

26
00:01:15,870 --> 00:01:17,660
‫Ja, also haben wir

27
00:01:17,660 --> 00:01:19,760
‫hier den Bewertungsdurchschnitt und die

28
00:01:19,760 --> 00:01:22,380
‫Bewertungsmenge, aber im Moment sind es nur

29
00:01:22,380 --> 00:01:25,307
‫einige Zahlen und natürlich nicht der tatsächliche Durchschnitt

30
00:01:25,307 --> 00:01:27,560
‫und die Anzahl der Bewertungen, weil

31
00:01:27,560 --> 00:01:30,840
‫wir das zu keinem Zeitpunkt wirklich berechnet haben unsere

32
00:01:30,840 --> 00:01:34,290
‫Bewerbung, aber genau das werden wir in diesem Video ändern.

33
00:01:34,290 --> 00:01:37,370
‫Im Moment berechnen wir also die durchschnittliche Bewertung und

34
00:01:37,370 --> 00:01:39,750
‫auch die Anzahl der Bewertungen einer Tour

35
00:01:39,750 --> 00:01:43,330
‫jedes Mal, wenn eine neue Bewertung zu dieser Tour hinzugefügt

36
00:01:43,330 --> 00:01:47,000
‫wird oder wenn eine Bewertung aktualisiert oder gelöscht wird, denn das

37
00:01:47,000 --> 00:01:49,230
‫sind genau die Situationen, in

38
00:01:49,230 --> 00:01:52,830
‫denen die Anzahl oder der Durchschnitt könnte sich ändern, richtig.

39
00:01:52,830 --> 00:01:55,920
‫Wie also wollen wir das konkret umsetzen?

40
00:01:55,920 --> 00:01:58,800
‫Hier im Testmodell werden wir eine neue

41
00:01:58,800 --> 00:02:00,620
‫Funktion erstellen, die

42
00:02:00,620 --> 00:02:02,690
‫eine Tour-ID aufnimmt und die

43
00:02:02,690 --> 00:02:05,690
‫durchschnittliche Bewertung und die Anzahl der Bewertungen berechnet,

44
00:02:05,690 --> 00:02:09,410
‫die in unserer Sammlung für diese Tour vorhanden sind.

45
00:02:09,410 --> 00:02:11,880
‫Am Ende aktualisiert die Funktion dann

46
00:02:11,880 --> 00:02:14,020
‫sogar das entsprechende Tourdokument.

47
00:02:14,020 --> 00:02:16,360
‫Um diese Funktion zu verwenden, verwenden

48
00:02:16,360 --> 00:02:19,510
‫wir dann Middleware, um diese Funktion grundsätzlich jedes Mal

49
00:02:19,510 --> 00:02:22,650
‫aufzurufen, wenn es eine neue Überprüfung gibt oder eine

50
00:02:22,650 --> 00:02:24,980
‫aktualisiert oder gelöscht wird, okay.

51
00:02:24,980 --> 00:02:28,030
‫Beginnen wir nun damit, diese Funktion zu schreiben, und

52
00:02:28,030 --> 00:02:31,370
‫dafür werden wir tatsächlich eine statische Methode in unser Schema

53
00:02:31,370 --> 00:02:34,510
‫schreiben, und das ist eine Funktion von Mongoose, die

54
00:02:34,510 --> 00:02:36,580
‫wir noch nicht verwendet haben.

55
00:02:36,580 --> 00:02:38,630
‫Wir haben also nur Instanzmethoden verwendet,

56
00:02:38,630 --> 00:02:40,500
‫die wir für Dokumente aufrufen

57
00:02:40,500 --> 00:02:42,050
‫können und die

58
00:02:42,050 --> 00:02:46,090
‫auch sehr nützlich sind, aber diesmal werden wir wirklich statische Methoden verwenden.

59
00:02:46,090 --> 00:02:46,923
‫Okay.

60
00:02:47,850 --> 00:02:51,330
‫Diese können also wieder direkt am Modell aufgerufen werden,

61
00:02:51,330 --> 00:02:59,520
‫beispielsweise wie dieser Testbericht. calcStats, ok.

62
00:02:59,520 --> 00:03:04,350
‫Und so funktioniert das natürlich mit reviewSchema

63
00:03:04,350 --> 00:03:09,323
‫und dann . Statik und dann den Namen der Funktion.

64
00:03:10,490 --> 00:03:11,540
‫calcAverageRatings ist

65
00:03:18,360 --> 00:03:22,143
‫also gleichbedeutend mit einer Funktion, die sich eine Tour-ID merkt, und

66
00:03:24,800 --> 00:03:27,180
‫diese ID ist natürlich für die

67
00:03:27,180 --> 00:03:29,670
‫Tour, zu der die aktuelle Bewertung gehört.

68
00:03:29,670 --> 00:03:32,790
‫Und ich weiß, dass das jetzt wahrscheinlich alles etwas

69
00:03:32,790 --> 00:03:35,000
‫verwirrend klingt, aber keine Sorge, wenn

70
00:03:35,000 --> 00:03:36,720
‫wir das alles implementiert haben

71
00:03:36,720 --> 00:03:38,380
‫und auch wenn wir

72
00:03:38,380 --> 00:03:42,080
‫es testen, wird es in der Praxis sehr sinnvoll sein, okay?

73
00:03:42,080 --> 00:03:45,120
‫Wie auch immer, um die Berechnung jetzt

74
00:03:45,120 --> 00:03:48,470
‫tatsächlich durchzuführen, verwenden wir wieder die Aggregationspipeline, richtig.

75
00:03:48,470 --> 00:03:53,470
‫Denken wir also daran, dass wir in unserem Tool-Controller genau

76
00:03:53,970 --> 00:03:56,990
‫hier die Aggregationspipeline verwenden, um

77
00:03:56,990 --> 00:04:00,730
‫auch einige Statistiken wie diese zu erstellen, okay.

78
00:04:00,730 --> 00:04:04,560
‫Also haben wir die Aggregatmethode verwendet, die wir direkt am

79
00:04:04,560 --> 00:04:06,670
‫Modell aufgerufen haben, okay.

80
00:04:06,670 --> 00:04:09,080
‫In unserer Instanzmethode können wir jetzt

81
00:04:09,080 --> 00:04:10,393
‫genau dasselbe tun.

82
00:04:12,140 --> 00:04:15,690
‫In einer statischen Methode wie dieser zeigen diese Schlüsselwörter

83
00:04:15,690 --> 00:04:18,130
‫also tatsächlich auf das aktuelle Modell.

84
00:04:18,130 --> 00:04:20,623
‫Deshalb können wir dies verwenden. aggregieren, denn denken Sie

85
00:04:22,160 --> 00:04:25,100
‫daran, dass wir dies nennen müssen. aggregieren direkt auf

86
00:04:25,100 --> 00:04:27,470
‫das Modell, und genau deshalb

87
00:04:27,470 --> 00:04:30,970
‫verwenden wir hier in erster Linie eine statische Methode.

88
00:04:30,970 --> 00:04:33,690
‫Denn auch das zeigt jetzt wieder auf

89
00:04:33,690 --> 00:04:38,200
‫das Modell und wir müssen Aggregat immer auf das Modell nennen, okay.

90
00:04:38,200 --> 00:04:41,610
‫Also müssen wir aggregiert ein Array

91
00:04:41,610 --> 00:04:45,850
‫aller Stufen übergeben, die wir aggregiert haben wollen, okay.

92
00:04:45,850 --> 00:04:47,930
‫Was wollen wir also zuerst tun?

93
00:04:47,930 --> 00:04:51,930
‫Nun, der erste Schritt sollte sein, alle Bewertungen auszuwählen,

94
00:04:51,930 --> 00:04:54,280
‫die tatsächlich zu der aktuellen

95
00:04:54,280 --> 00:04:57,470
‫Tour gehören, die als Argument übergeben wurde.

96
00:04:57,470 --> 00:04:58,790
‫Okay.

97
00:04:58,790 --> 00:05:02,093
‫Unsere erste Etappe ist also eine Match-Phase, denkt daran,

98
00:05:03,090 --> 00:05:03,933
‫und

99
00:05:05,360 --> 00:05:07,580
‫hier haben wir unser Filterobjekt

100
00:05:08,620 --> 00:05:11,420
‫übergeben und können sagen, Tour gleich Tour,

101
00:05:11,420 --> 00:05:13,740
‫aber wir brauchen das nicht wirklich,

102
00:05:13,740 --> 00:05:17,950
‫wie Sie bereits wissen, und entfernen wir dies einfach Teil, oder

103
00:05:17,950 --> 00:05:20,670
‫um es hier mit den Namen etwas

104
00:05:20,670 --> 00:05:24,290
‫weniger verwirrend zu machen, nennen wir diese hier Tour-ID, okay.

105
00:05:24,290 --> 00:05:26,620
‫Also tourId hier rein,

106
00:05:26,620 --> 00:05:27,480
‫okay.

107
00:05:27,480 --> 00:05:29,510
‫Wir wählen also nur

108
00:05:29,510 --> 00:05:33,330
‫eine Tour aus, die wir tatsächlich aktualisieren möchten, okay.

109
00:05:33,330 --> 00:05:35,740
‫Lassen Sie uns nun in der

110
00:05:35,740 --> 00:05:37,930
‫nächsten Phase die Statistiken

111
00:05:37,930 --> 00:05:41,033
‫selbst berechnen, und dafür verwenden wir eine Gruppenphase.

112
00:05:42,920 --> 00:05:44,900
‫Denken Sie in der Gruppenphase daran,

113
00:05:44,900 --> 00:05:49,900
‫dass das erste Feld, das wir angeben müssen, die ID ist, also _id und dann

114
00:05:50,240 --> 00:05:51,740
‫das gemeinsame Feld, das

115
00:05:51,740 --> 00:05:53,570
‫alle Dokumente gemeinsam haben, nach

116
00:05:53,570 --> 00:05:56,200
‫denen wir gruppieren möchten, und das wird wieder

117
00:05:56,200 --> 00:05:57,543
‫die Tour sein.

118
00:06:00,230 --> 00:06:04,460
‫Genau wie in unserem vorherigen statistischen Berechnungsbeispiel haben wir

119
00:06:04,460 --> 00:06:07,310
‫hier nach dem Schwierigkeitsgrad gruppiert.

120
00:06:07,310 --> 00:06:10,250
‫Auf diese Weise berechnen wir die Statistik für leichte

121
00:06:10,250 --> 00:06:11,840
‫und die Statistik für

122
00:06:11,840 --> 00:06:14,560
‫mittlere und dann die Statistik für schwere Touren.

123
00:06:14,560 --> 00:06:17,140
‫In diesem Beispiel haben wir also alle Touren

124
00:06:17,140 --> 00:06:18,453
‫nach ihrer Schwierigkeit gruppiert,

125
00:06:19,450 --> 00:06:20,283
‫okay.

126
00:06:20,283 --> 00:06:22,810
‫Aber hier gruppieren wir natürlich alle Touren

127
00:06:22,810 --> 00:06:23,663
‫nach Tour.

128
00:06:25,440 --> 00:06:26,273
‫Groß.

129
00:06:26,273 --> 00:06:28,023
‫Jetzt die Anzahl der Bewertungen, denken

130
00:06:31,290 --> 00:06:32,653
‫Sie daran, wie

131
00:06:33,690 --> 00:06:35,970
‫wir das machen, also fügen wir im Grunde

132
00:06:35,970 --> 00:06:37,970
‫genommen nur eine für jede Tour hinzu,

133
00:06:37,970 --> 00:06:41,570
‫die wir haben, also jede Tour, die im vorherigen Schritt abgeglichen wurde, okay.

134
00:06:41,570 --> 00:06:44,810
‫Wenn es also fünf Review-Dokumente für die aktuelle

135
00:06:44,810 --> 00:06:48,310
‫Tour gibt, wird für jedes dieser Dokumente eines hinzugefügt.

136
00:06:48,310 --> 00:06:51,310
‫Am Ende werden es also fünf Bewertungen

137
00:06:51,310 --> 00:06:55,130
‫sein, und wieder, weil wir natürlich fünf Review-Dokumente haben.

138
00:06:55,130 --> 00:06:57,083
‫Das macht also Sinn, oder?

139
00:06:58,532 --> 00:07:03,532
‫Dann auch die durchschnittliche Bewertung, die wie zuvor den durchschnittlichen

140
00:07:03,970 --> 00:07:08,970
‫Operator verwendet und dieser in einem Objekt stehen muss und

141
00:07:09,180 --> 00:07:10,013
‫hier

142
00:07:12,490 --> 00:07:14,440
‫der Name des

143
00:07:15,470 --> 00:07:18,330
‫Feldes, das die Bewertung darstellt, richtig.

144
00:07:18,330 --> 00:07:22,180
‫Denken Sie also daran, dass jede Bewertung ein Bewertungsfeld hat.

145
00:07:22,180 --> 00:07:24,993
‫Daraus wollen wir den Durchschnitt berechnen.

146
00:07:27,720 --> 00:07:30,350
‫Okay, und das ist es tatsächlich.

147
00:07:30,350 --> 00:07:32,950
‫Die Anzahl und der Durchschnitt der Bewertungen

148
00:07:32,950 --> 00:07:36,790
‫ist also genau das, was wir in dieser Aggregation berechnen wollten.

149
00:07:36,790 --> 00:07:39,740
‫Denken Sie jetzt daran, dass dies tatsächlich ein

150
00:07:39,740 --> 00:07:43,290
‫Versprechen zurückgibt und wir das also abwarten und dann in

151
00:07:43,290 --> 00:07:46,193
‫einer Variablen namens stats speichern müssen.

152
00:07:49,070 --> 00:07:49,980
‫Okay.

153
00:07:49,980 --> 00:07:53,023
‫Dann markieren Sie diesen hier auch als

154
00:07:54,600 --> 00:07:55,620
‫asynchron, speichern

155
00:07:55,620 --> 00:07:59,790
‫Sie ihn und jetzt müssen wir tatsächlich diese Statistikvariable verwenden.

156
00:07:59,790 --> 00:08:02,930
‫Im Moment möchte ich nur zum

157
00:08:02,930 --> 00:08:06,073
‫Testen die Statistiken tatsächlich in der Konsole protokollieren.

158
00:08:08,120 --> 00:08:09,090
‫Konsole.

159
00:08:10,600 --> 00:08:11,433
‫Log-Statistiken.

160
00:08:13,640 --> 00:08:16,880
‫Okay, dann werden wir im späteren Schritt eigentlich,

161
00:08:16,880 --> 00:08:19,950
‫wie bereits erwähnt, das Tourdokument mit diesen Statistiken

162
00:08:19,950 --> 00:08:21,770
‫aktualisieren wollen, aber das

163
00:08:21,770 --> 00:08:23,930
‫belasse ich etwas später, denn

164
00:08:23,930 --> 00:08:26,070
‫jetzt müssen wir diese Methode

165
00:08:26,070 --> 00:08:28,390
‫eigentlich hier irgendwo aufrufen , da

166
00:08:28,390 --> 00:08:31,133
‫sonst die Statistik hier nie aufgerufen wird.

167
00:08:32,100 --> 00:08:33,863
‫Und denken Sie daran, wie wir

168
00:08:33,863 --> 00:08:36,160
‫am Anfang gesagt haben, dass wir dies jedes Mal

169
00:08:36,160 --> 00:08:38,523
‫mit Middleware tun werden, wenn eine neue Überprüfung erstellt wird.

170
00:08:40,050 --> 00:08:44,250
‫Implementieren wir das also mit reviewSchema pre save und

171
00:08:45,330 --> 00:08:46,163
‫dann

172
00:08:50,680 --> 00:08:54,563
‫einfach mit unserer normalen normalen Middleware-Funktion hier.

173
00:08:55,860 --> 00:08:57,873
‫Und denken Sie daran, dass dieses

174
00:08:57,873 --> 00:09:00,093
‫Schlüsselwort bei dieser Art von Middleware auf

175
00:09:00,093 --> 00:09:02,210
‫das Dokument verweist, das gerade gespeichert wird.

176
00:09:02,210 --> 00:09:04,760
‫Das deutet also auf die

177
00:09:06,540 --> 00:09:08,850
‫aktuelle Bewertung hin, okay.

178
00:09:08,850 --> 00:09:11,880
‫Daher wollen wir die Funktion calcAverageRating

179
00:09:11,880 --> 00:09:15,020
‫damit aufrufen. Tour, richtig.

180
00:09:15,020 --> 00:09:18,770
‫Wie rufen wir diese Funktion nun eigentlich auf?

181
00:09:18,770 --> 00:09:19,940
‫Denken Sie daran, wie

182
00:09:19,940 --> 00:09:22,470
‫ich sagte, dass diese Funktion auf dem Modell verfügbar ist.

183
00:09:22,470 --> 00:09:25,050
‫Also im Grunde genommen wie

184
00:09:25,050 --> 00:09:27,390
‫diese Bewertung. calcAverageRatings und dann

185
00:09:29,557 --> 00:09:35,173
‫wollen wir das wie gesagt nutzen. Tour, ok.

186
00:09:35,173 --> 00:09:37,240
‫Und noch einmal, denn dies ist die

187
00:09:37,240 --> 00:09:40,340
‫aktuelle Bewertung und dies ist dann die Tour-ID, die wir

188
00:09:40,340 --> 00:09:42,143
‫in den calcAverageRatings übergeben werden.

189
00:09:43,640 --> 00:09:46,950
‫Das Problem ist nun, dass an dieser Stelle hier

190
00:09:46,950 --> 00:09:50,200
‫im Code die Review-Variable noch nicht definiert ist.

191
00:09:50,200 --> 00:09:53,340
‫Nun könnte man meinen, dass die einfache Lösung darin

192
00:09:53,340 --> 00:09:57,780
‫besteht, diesen Code nach dieser Review-Deklaration einfach hier einzufügen, aber das wird leider

193
00:09:57,780 --> 00:10:00,480
‫nicht funktionieren, denn genau wie in Express

194
00:10:00,480 --> 00:10:03,630
‫läuft dieser Code hier grundsätzlich in der Reihenfolge ab,

195
00:10:03,630 --> 00:10:05,730
‫in der er deklariert wurde.

196
00:10:05,730 --> 00:10:08,100
‫Wenn wir also diesen Code hier

197
00:10:08,100 --> 00:10:11,550
‫nach der Review-Deklaration einfügen würden, dann würde dieses ReviewSchema hier

198
00:10:11,550 --> 00:10:13,810
‫diese Middleware nicht enthalten, da wir

199
00:10:13,810 --> 00:10:16,050
‫es dann erst deklarieren würden, nachdem

200
00:10:16,050 --> 00:10:19,750
‫das Review-Modell bereits erstellt wurde, okay, aber es gibt glücklicherweise

201
00:10:19,750 --> 00:10:23,160
‫noch einen Weg, dies zu umgehen und das ist,

202
00:10:23,160 --> 00:10:26,273
‫dies zu verwenden. Konstrukteur.

203
00:10:28,970 --> 00:10:31,640
‫Das weist hier also noch auf das Modell hin.

204
00:10:31,640 --> 00:10:35,267
‫Wissen Sie, im Grunde ist dies wiederum das aktuelle Dokument

205
00:10:35,267 --> 00:10:38,030
‫und der Konstruktor ist im Grunde das

206
00:10:38,030 --> 00:10:40,470
‫Modell, das dieses Dokument erstellt hat.

207
00:10:40,470 --> 00:10:42,410
‫Das hier steht also für

208
00:10:42,410 --> 00:10:45,823
‫die Tour und so können wir es dann einfach so machen.

209
00:10:47,420 --> 00:10:52,043
‫Dann wie immer als nächstes anrufen und das wars dann auch schon.

210
00:10:54,130 --> 00:10:57,320
‫Also lassen Sie uns jetzt weitermachen und dies testen.

211
00:10:57,320 --> 00:11:00,500
‫Und dafür werde ich zuerst eine neue Tour erstellen, denn

212
00:11:00,500 --> 00:11:02,670
‫die anderen, die wir bereits haben,

213
00:11:02,670 --> 00:11:04,620
‫haben den Durchschnitt und die

214
00:11:04,620 --> 00:11:06,730
‫Anzahl der Bewertungen bereits berechnet und

215
00:11:06,730 --> 00:11:10,240
‫wir möchten hier wirklich bei Null anfangen, wenn wir das testen.

216
00:11:10,240 --> 00:11:13,270
‫Um eine neue Tour zu erstellen, müssen wir als

217
00:11:13,270 --> 00:11:16,840
‫Administratoren angemeldet sein, und ich denke, das sind wir derzeit, aber um

218
00:11:16,840 --> 00:11:18,940
‫sicherzugehen, machen wir das noch einmal.

219
00:11:20,400 --> 00:11:21,233
‫Okay.

220
00:11:22,660 --> 00:11:24,981
‫Das ist also die neue Testtour.

221
00:11:24,981 --> 00:11:28,313
‫In Ordnung, entfernen wir diese hier, sie sind nicht obligatorisch

222
00:11:30,120 --> 00:11:32,663
‫und ich denke, damit können wir loslegen.

223
00:11:36,950 --> 00:11:40,580
‫In Ordnung, und hier sehen Sie die Standardeinstellungen, die wir

224
00:11:40,580 --> 00:11:43,130
‫zuvor festgelegt haben, also die Bewertungen

225
00:11:43,130 --> 00:11:46,430
‫durchschnittlich für fünf und die Menge auf null gesetzt, okay.

226
00:11:46,430 --> 00:11:49,630
‫Um nun eine neue Bewertung zu erstellen, müssen

227
00:11:49,630 --> 00:11:52,560
‫wir eigentlich als normaler Benutzer angemeldet sein, also

228
00:11:52,560 --> 00:11:54,033
‫nicht als Administrator.

229
00:11:54,900 --> 00:11:58,900
‫Nehmen wir also einen normalen Benutzer, sagen wir.

230
00:11:58,900 --> 00:12:02,120
‫Also lass uns einfach diese Laura hier benutzen.

231
00:12:02,120 --> 00:12:03,470
‫Also Laura@Beispiel. com

232
00:12:04,804 --> 00:12:08,063
‫und wie bereits erwähnt, ist das Passwort immer das gleiche.

233
00:12:12,000 --> 00:12:16,773
‫Also lass uns das machen und jetzt werden wir eine neue Rezension auf Tour erstellen.

234
00:12:17,920 --> 00:12:21,103
‫Also holen wir uns jetzt die Tour, die wir zuvor

235
00:12:22,890 --> 00:12:26,653
‫erstellt haben, also diese ID und fügen sie hier in die URL ein.

236
00:12:27,880 --> 00:12:30,490
‫Okay, und denken Sie daran, dass

237
00:12:30,490 --> 00:12:33,877
‫diese Route jetzt automatisch eine Tour-ID von der

238
00:12:33,877 --> 00:12:37,413
‫URL und eine Benutzer-ID vom derzeit angemeldeten Benutzer erhält,

239
00:12:38,730 --> 00:12:39,563
‫okay.

240
00:12:39,563 --> 00:12:42,063
‫Nehmen wir also diese als erste Bewertung,

241
00:12:44,490 --> 00:12:48,643
‫senden wir sie ab, und jetzt möchte ich einen Blick auf unsere Konsole werfen.

242
00:12:50,060 --> 00:12:53,230
‫Wir haben hier eine Ausgabe, aber aus irgendeinem Grund ist

243
00:12:53,230 --> 00:12:55,260
‫sie nur wie dieses leere Array.

244
00:12:55,260 --> 00:12:58,010
‫Also muss hier etwas nicht funktionieren.

245
00:12:58,010 --> 00:13:02,400
‫Werfen wir also einen Blick auf die Tour-ID hier, um sicherzustellen,

246
00:13:02,400 --> 00:13:07,200
‫dass wir hier den richtigen Wert erhalten, ID und kommentieren wir diesen

247
00:13:07,200 --> 00:13:09,340
‫Teil auch hier aus,

248
00:13:10,210 --> 00:13:14,220
‫um zu sehen, ob in diesem Teil möglicherweise ein Fehler

249
00:13:14,220 --> 00:13:17,360
‫vorliegt, und versuchen wir es jetzt es wieder.

250
00:13:17,360 --> 00:13:20,113
‫Ich füge das gleiche hier einfach nochmal hinzu, okay.

251
00:13:23,680 --> 00:13:26,453
‫Okay, jetzt bekommen wir tatsächlich etwas.

252
00:13:27,310 --> 00:13:29,790
‫Wir haben also diese eine Rezension,

253
00:13:29,790 --> 00:13:32,210
‫die wir ursprünglich erstellt haben.

254
00:13:32,210 --> 00:13:34,900
‫Es beginnt also mit diesem ac15,

255
00:13:34,900 --> 00:13:39,623
‫aber das, was ich gerade erstellt habe, ist dieses 66d, okay.

256
00:13:39,623 --> 00:13:44,223
‫Schauen wir uns das hier in Compass an.

257
00:13:45,490 --> 00:13:47,223
‫Wir müssen also zur letzten Seite gehen.

258
00:13:49,380 --> 00:13:52,450
‫Okay, und das, was in unserer Konsole auftaucht, ist

259
00:13:52,450 --> 00:13:55,270
‫nur dieses hier, aber nicht das zweite,

260
00:13:55,270 --> 00:13:57,730
‫das wir gerade erstellt haben, okay.

261
00:13:57,730 --> 00:13:59,670
‫Wenn wir jetzt also einen

262
00:13:59,670 --> 00:14:02,980
‫dritten erstellen, sollten wir wahrscheinlich den ersten und den zweiten sehen.

263
00:14:02,980 --> 00:14:03,880
‫Versuchen wir es also.

264
00:14:12,060 --> 00:14:13,160
‫Okay.

265
00:14:13,160 --> 00:14:16,290
‫Schicken Sie dieses und jetzt hier in unserer Ausgabe

266
00:14:18,060 --> 00:14:20,830
‫bekomme ich tatsächlich alle drei von ihnen.

267
00:14:20,830 --> 00:14:23,793
‫Das macht also nicht viel Sinn, aber

268
00:14:24,800 --> 00:14:27,443
‫ich wollte hier auf jeden Fall

269
00:14:27,443 --> 00:14:29,700
‫darauf hinweisen, dass wir nicht

270
00:14:29,700 --> 00:14:33,560
‫pre verwenden sollten, sondern stattdessen die post-save-Middleware verwenden sollten, okay.

271
00:14:33,560 --> 00:14:35,520
‫Und das liegt daran, dass der

272
00:14:35,520 --> 00:14:37,350
‫aktuelle Testbericht beim Pre-Save noch

273
00:14:37,350 --> 00:14:39,270
‫nicht wirklich in der Sammlung ist.

274
00:14:39,270 --> 00:14:42,420
‫Also, wenn wir dieses Match dann hier machen, sollte

275
00:14:42,420 --> 00:14:45,170
‫es dann nicht in der Ausgabe hier

276
00:14:45,170 --> 00:14:47,150
‫erscheinen können, weil es zu

277
00:14:47,150 --> 00:14:51,000
‫diesem Zeitpunkt noch nicht wirklich in der Sammlung gespeichert ist, okay.

278
00:14:51,000 --> 00:14:52,760
‫Also am besten hier posten,

279
00:14:52,760 --> 00:14:54,770
‫denn zu diesem Zeitpunkt sind natürlich schon

280
00:14:54,770 --> 00:14:57,820
‫alle Dokumente in der Datenbank gespeichert und das ist dann

281
00:14:57,820 --> 00:14:59,330
‫ein toller Zeitpunkt um

282
00:14:59,330 --> 00:15:02,430
‫diese Berechnung mit allen Bewertungen tatsächlich schon durchzuführen und das

283
00:15:02,430 --> 00:15:04,723
‫Ergebnis dann auf der Tour zu speichern .

284
00:15:05,940 --> 00:15:07,750
‫Okay, ich bin mir

285
00:15:07,750 --> 00:15:10,403
‫nicht wirklich sicher, warum dieser hier tatsächlich an

286
00:15:11,670 --> 00:15:15,603
‫dieser Stelle aufgetaucht ist, aber versuchen wir es jetzt mit einem anderen.

287
00:15:19,290 --> 00:15:21,280
‫Das ist also der vierte,

288
00:15:21,280 --> 00:15:25,450
‫und jetzt bekommen wir next ist keine Funktion und tatsächlich

289
00:15:25,450 --> 00:15:27,930
‫hat die Post-Middleware, wie ich bereits

290
00:15:27,930 --> 00:15:30,250
‫erwähnt habe, keinen Zugriff auf next

291
00:15:30,250 --> 00:15:33,940
‫und daher können wir sie natürlich nicht aufrufen, nicht

292
00:15:33,940 --> 00:15:34,833
‫verwenden.

293
00:15:37,070 --> 00:15:40,793
‫In Ordnung, und hier haben wir unsere nächste Bewertung,

294
00:15:42,160 --> 00:15:42,993
‫okay.

295
00:15:42,993 --> 00:15:45,913
‫So taucht es jetzt auch hier auf.

296
00:15:48,090 --> 00:15:50,840
‫Wir brauchen das also nicht und können jetzt sicher

297
00:15:50,840 --> 00:15:53,053
‫versuchen, unsere Statistiken hier zu berechnen.

298
00:15:54,140 --> 00:15:56,600
‫Speichern Sie es und löschen wir

299
00:15:56,600 --> 00:15:59,000
‫tatsächlich alle diese Bewertungen.

300
00:15:59,000 --> 00:16:03,623
‫Also möchte ich im Grunde bei Null anfangen, okay.

301
00:16:04,880 --> 00:16:05,800
‫Also

302
00:16:08,320 --> 00:16:11,190
‫sollten alle diese fünf Bewertungen hier gehen

303
00:16:16,300 --> 00:16:18,450
‫und jetzt können wir loslegen.

304
00:16:18,450 --> 00:16:21,030
‫Also lasst uns dieses als erstes erstellen

305
00:16:22,860 --> 00:16:26,400
‫und jetzt lasst uns einen Blick auf unsere Statistiken werfen

306
00:16:26,400 --> 00:16:27,600
‫und los gehts.

307
00:16:27,600 --> 00:16:29,530
‫Dies ist also die aktuelle

308
00:16:29,530 --> 00:16:31,670
‫Tour-ID, dann ist die Anzahl der Bewertungen

309
00:16:31,670 --> 00:16:33,703
‫eins und der Durchschnitt ist natürlich drei.

310
00:16:35,510 --> 00:16:39,240
‫Wenn wir also eine weitere mit der Bewertung von fünf hinzufügen,

311
00:16:40,920 --> 00:16:43,310
‫sollte der Durchschnitt vier betragen und wir

312
00:16:43,310 --> 00:16:46,010
‫sollten die Anzahl der Bewertungen gleich zwei haben.

313
00:16:47,840 --> 00:16:52,460
‫Also lasst uns das versuchen und tatsächlich wie

314
00:16:52,460 --> 00:16:55,480
‫gesagt zwei Bewertungen, durchschnittlich vier.

315
00:16:55,480 --> 00:16:59,010
‫Und nur noch einer, um ganz sicher zu gehen, fügen

316
00:16:59,010 --> 00:17:00,610
‫wir noch einen mit

317
00:17:05,600 --> 00:17:07,240
‫fünf hinzu, und los geht's.

318
00:17:07,240 --> 00:17:08,073
‫Groß.

319
00:17:08,073 --> 00:17:10,990
‫Wir berechnen die Statistiken jetzt also richtig, aber

320
00:17:10,990 --> 00:17:13,090
‫natürlich werden sie noch

321
00:17:13,090 --> 00:17:15,290
‫nicht in das aktuelle Tourdokument übernommen.

322
00:17:15,290 --> 00:17:18,630
‫Wenn wir also in Compass hierher zu der Tour kommen, die

323
00:17:18,630 --> 00:17:20,293
‫wir gerade erstellt haben,

324
00:17:22,330 --> 00:17:24,340
‫ist es wahrscheinlich die letzte hier.

325
00:17:24,340 --> 00:17:27,790
‫Ja, also unsere Testtour hat immer noch diese

326
00:17:27,790 --> 00:17:30,470
‫Standardwerte von 4. 5 und null,

327
00:17:30,470 --> 00:17:31,350
‫okay.

328
00:17:31,350 --> 00:17:33,260
‫Jetzt ist es also an

329
00:17:33,260 --> 00:17:36,573
‫der Zeit, die berechneten Statistiken tatsächlich in dieses Tourdokument

330
00:17:38,250 --> 00:17:39,480
‫zu übertragen, okay.

331
00:17:39,480 --> 00:17:41,670
‫Und das machen wir.

332
00:17:41,670 --> 00:17:44,420
‫Dazu benötigen wir

333
00:17:44,420 --> 00:17:47,863
‫zunächst einmal das Tourmodell, richtig.

334
00:17:48,810 --> 00:17:49,643
‫Also Tour

335
00:17:51,620 --> 00:17:52,453
‫verlangen

336
00:17:55,250 --> 00:17:56,483
‫und los gehts.

337
00:18:03,860 --> 00:18:07,010
‫Was wir also tun müssen, ist im Grunde die

338
00:18:07,010 --> 00:18:10,160
‫aktuelle Tour zu finden und sie dann zu aktualisieren.

339
00:18:10,160 --> 00:18:13,873
‫Also haben wir das schon oft gemacht,

340
00:18:14,830 --> 00:18:16,980
‫findById und update,

341
00:18:16,980 --> 00:18:17,813
‫okay.

342
00:18:17,813 --> 00:18:21,370
‫Und die ID ist natürlich die Tour-ID, die in die

343
00:18:21,370 --> 00:18:23,670
‫Funktion übergeben wurde und dann

344
00:18:23,670 --> 00:18:27,140
‫ein Objekt der Daten, die wir eigentlich aktualisieren wollen.

345
00:18:27,140 --> 00:18:30,470
‫Also holen wir uns diese Feldnamen von hier.

346
00:18:30,470 --> 00:18:32,500
‫So haben wir BewertungenMenge auf

347
00:18:34,970 --> 00:18:36,230
‫der einen Seite.

348
00:18:36,230 --> 00:18:39,260
‫Lassen Sie es uns hier vorerst auf eins zusammenfassen,

349
00:18:39,260 --> 00:18:41,240
‫damit wir keinen Fehler und

350
00:18:41,240 --> 00:18:42,893
‫keine Bewertungen erhalten. Durchschnitt.

351
00:18:46,910 --> 00:18:48,940
‫Nochmals, um Fehler zu vermeiden,

352
00:18:48,940 --> 00:18:50,650
‫denn jetzt möchte ich

353
00:18:50,650 --> 00:18:53,400
‫hierher kommen und mir diese Statistiken ansehen.

354
00:18:53,400 --> 00:18:57,700
‫Sie sehen also, dass sie tatsächlich in einem Array gespeichert sind, okay.

355
00:18:57,700 --> 00:19:00,870
‫Wir müssen also zur ersten Position dieses Arrays gehen, wo

356
00:19:00,870 --> 00:19:02,433
‫sich dieses Objekt befindet.

357
00:19:04,520 --> 00:19:07,060
‫Also Statistik auf Position

358
00:19:07,970 --> 00:19:12,820
‫Null und von dort bekommen wir die Endbewertungseigenschaft,

359
00:19:12,820 --> 00:19:13,653
‫okay.

360
00:19:13,653 --> 00:19:14,593
‫Also dieser hier.

361
00:19:18,440 --> 00:19:21,283
‫Und dann natürlich das gleiche für die durchschnittliche Bewertung.

362
00:19:23,870 --> 00:19:24,800
‫Okay.

363
00:19:24,800 --> 00:19:27,070
‫Und jetzt müssen wir auch darauf warten.

364
00:19:27,070 --> 00:19:31,640
‫Dies gibt also wie immer eine Prämisse zurück und so können wir darauf warten.

365
00:19:31,640 --> 00:19:34,750
‫Nun könnten wir das Ergebnis auch in einer Variablen speichern,

366
00:19:34,750 --> 00:19:37,250
‫aber wir brauchen die Tour nicht wirklich.

367
00:19:37,250 --> 00:19:39,530
‫Alles, was wir tun wollen, ist, es

368
00:19:39,530 --> 00:19:40,880
‫wirklich zu aktualisieren,

369
00:19:40,880 --> 00:19:43,700
‫und deshalb speichern wir den Ergebniswert der Prämisse nirgendwo.

370
00:19:43,700 --> 00:19:44,960
‫Okay.

371
00:19:44,960 --> 00:19:49,960
‫Versuchen wir also einfach, hier eine weitere Bewertung

372
00:19:50,050 --> 00:19:53,373
‫hinzuzufügen, diesmal mit einer schrecklichen.

373
00:19:55,800 --> 00:19:56,810
‫Okay.

374
00:19:56,810 --> 00:20:00,650
‫Werfen wir zunächst einen Blick auf die Statistik.

375
00:20:00,650 --> 00:20:03,300
‫Wir erhalten also natürlich die Bewertung von vier, also die Anzahl der

376
00:20:03,300 --> 00:20:06,203
‫Bewertungen, und den Durchschnitt von 3. 5.

377
00:20:07,270 --> 00:20:10,090
‫Um wirklich zu sehen, ob es funktioniert hat,

378
00:20:10,090 --> 00:20:13,290
‫schauen wir uns jetzt Compass an oder wir können auch

379
00:20:13,290 --> 00:20:15,223
‫den Endpunkt der Tour verwenden oder

380
00:20:16,270 --> 00:20:17,320
‫abrufen, okay.

381
00:20:17,320 --> 00:20:20,593
‫Wir brauchen also die Tour-ID, die wir von

382
00:20:23,550 --> 00:20:27,160
‫hier kopieren können, hier einfügen, und jetzt kommt

383
00:20:27,160 --> 00:20:30,060
‫der Moment und tatsächlich hat es

384
00:20:30,060 --> 00:20:31,110
‫funktioniert, perfekt.

385
00:20:31,110 --> 00:20:34,940
‫Das ist großartig, absolut fantastisch.

386
00:20:34,940 --> 00:20:37,810
‫Nur noch einmal zum Spaß, lassen Sie uns

387
00:20:37,810 --> 00:20:39,893
‫hier eine weitere Rezension hinzufügen.

388
00:20:44,330 --> 00:20:45,163
‫Okay.

389
00:20:45,163 --> 00:20:48,480
‫Aktualisieren Sie dieses, und so erhalten wir jetzt fünf

390
00:20:48,480 --> 00:20:51,760
‫und unser Durchschnitt ist ein wenig gestiegen.

391
00:20:51,760 --> 00:20:52,593
‫Groß.

392
00:20:52,593 --> 00:20:56,570
‫Nehmen wir uns jetzt eine Sekunde Zeit und fassen wir zusammen, was wir hier gemacht haben.

393
00:20:56,570 --> 00:20:59,690
‫Also begannen wir mit der Erstellung einer statischen Methode.

394
00:20:59,690 --> 00:21:01,770
‫Also diese ganze Funktion

395
00:21:01,770 --> 00:21:04,870
‫hier, um im Grunde die Statistik des

396
00:21:04,870 --> 00:21:07,980
‫Durchschnitts und der Anzahl der Bewertungen für die

397
00:21:07,980 --> 00:21:12,230
‫Tour-ID zu erstellen, für die die aktuelle Bewertung erstellt wurde, okay.

398
00:21:12,230 --> 00:21:14,870
‫Und wir haben diese Funktion als statische

399
00:21:14,870 --> 00:21:18,030
‫Methode erstellt, weil wir die Aggregatfunktion im Modell

400
00:21:18,030 --> 00:21:19,310
‫aufrufen mussten.

401
00:21:19,310 --> 00:21:22,080
‫In einer statischen Methode ruft diese Variable also

402
00:21:22,080 --> 00:21:23,910
‫genau eine Methode auf.

403
00:21:23,910 --> 00:21:26,670
‫In diesen Fällen ist es also sehr praktisch.

404
00:21:26,670 --> 00:21:29,930
‫Also haben wir hier unsere Aggregationspipeline aufgebaut, in der

405
00:21:29,930 --> 00:21:32,590
‫wir alle Bewertungen ausgewählt haben, die der

406
00:21:32,590 --> 00:21:35,880
‫aktuellen Tour-ID entsprechen, und dann werden sie berechnet, die

407
00:21:35,880 --> 00:21:38,470
‫Statistiken für alle diese Bewertungen.

408
00:21:38,470 --> 00:21:40,520
‫Danach haben

409
00:21:40,520 --> 00:21:45,470
‫wir die Statistik zur aktuellen Tour gespeichert, okay.

410
00:21:45,470 --> 00:21:47,690
‫Um diese Funktion dann tatsächlich

411
00:21:47,690 --> 00:21:52,570
‫nutzen zu können, rufen wir sie auf, nachdem eine neue Bewertung erstellt wurde, okay.

412
00:21:52,570 --> 00:21:55,620
‫Dafür müssen wir diese verwenden. Konstruktor, weil

413
00:21:55,620 --> 00:21:58,930
‫dies auf das aktuelle Modell verweist.

414
00:21:58,930 --> 00:22:02,037
‫Denken Sie jetzt daran, wie gesagt, dass wir

415
00:22:02,037 --> 00:22:06,350
‫auch die Statistiken aktualisieren möchten, wenn eine Bewertung bearbeitet oder gelöscht

416
00:22:06,350 --> 00:22:08,090
‫wird, da diese Aktionen

417
00:22:08,090 --> 00:22:11,210
‫natürlich auch die Anzahl und den Durchschnitt beeinflussen.

418
00:22:11,210 --> 00:22:13,960
‫Dies ist jedoch etwas komplexer.

419
00:22:13,960 --> 00:22:18,140
‫Da dieses Video also schon ziemlich lange läuft, überlassen

420
00:22:18,140 --> 00:22:20,493
‫wir das eigentlich dem nächsten.

