﻿1
00:00:00,980 --> 00:00:02,560
‫Sprecher: In diesem

2
00:00:02,560 --> 00:00:05,490
‫Video verwenden wir einen einfachen Trick, um zu

3
00:00:05,490 --> 00:00:08,750
‫verhindern, dass Benutzer mehrere Bewertungen für dieselben Touren schreiben,

4
00:00:08,750 --> 00:00:11,323
‫also im Grunde doppelte Bewertungen vermeiden.

5
00:00:12,930 --> 00:00:16,140
‫Im letzten Video haben wir also all diese Bewertungen

6
00:00:16,140 --> 00:00:18,500
‫erstellt, um die Durchschnittswerte zu berechnen.

7
00:00:18,500 --> 00:00:21,400
‫Und wir haben mehrere Bewertungen für eine Tour

8
00:00:21,400 --> 00:00:23,630
‫erstellt, aber alle von demselben Benutzer.

9
00:00:23,630 --> 00:00:27,590
‫Aber in der Praxis macht das wenig Sinn, oder?

10
00:00:27,590 --> 00:00:29,700
‫In der realen Welt sollte

11
00:00:29,700 --> 00:00:32,510
‫jeder Benutzer jede Tour nur einmal überprüfen.

12
00:00:32,510 --> 00:00:35,670
‫Grundsätzlich kommt es also zu einer doppelten Bewertung,

13
00:00:35,670 --> 00:00:38,330
‫wenn eine Bewertung mit demselben Benutzer und

14
00:00:38,330 --> 00:00:40,060
‫derselben Tour-ID vorliegt.

15
00:00:40,060 --> 00:00:43,580
‫Und genau das wollen wir vermeiden.

16
00:00:43,580 --> 00:00:45,410
‫Und die offensichtliche Lösung

17
00:00:45,410 --> 00:00:48,470
‫besteht darin, einfach einen eindeutigen Index zu verwenden, oder?

18
00:00:48,470 --> 00:00:50,780
‫Es reicht jedoch nicht aus,

19
00:00:50,780 --> 00:00:53,120
‫diese beiden Felder auf eindeutig zu setzen.

20
00:00:53,120 --> 00:00:55,770
‫Und eigentlich wäre das wirklich sehr

21
00:00:55,770 --> 00:01:00,240
‫falsch, denn das würde bedeuten, dass jede Tour nur eine Bewertung bekommen

22
00:01:00,240 --> 00:01:03,570
‫kann und jeder Benutzer nur eine Bewertung schreiben kann.

23
00:01:03,570 --> 00:01:06,150
‫Und das wollen wir natürlich nicht.

24
00:01:06,150 --> 00:01:09,900
‫Was wir also brauchen, ist, dass beide zusammen einzigartig

25
00:01:09,900 --> 00:01:14,150
‫sind, damit die Kombination von Benutzer und Tour immer einzigartig ist.

26
00:01:14,150 --> 00:01:17,460
‫Das hört sich also etwas kompliziert an, aber

27
00:01:17,460 --> 00:01:21,170
‫zum Glück ist das mit Indizes eigentlich ganz einfach zu erreichen.

28
00:01:21,170 --> 00:01:24,860
‫Wir haben also bereits auf der Tour einen zusammengesetzten Index erstellt, und

29
00:01:24,860 --> 00:01:27,523
‫jetzt machen wir dasselbe hier bei den Bewertungen.

30
00:01:28,660 --> 00:01:32,400
‫Also noch einmal, gleich hier nach der Schemadefinition,

31
00:01:32,400 --> 00:01:36,513
‫und wir sind natürlich immer noch im Review-Modell, oder?

32
00:01:38,210 --> 00:01:41,450
‫Also überprüfe, und das ist

33
00:01:41,450 --> 00:01:44,800
‫nicht richtig, also überprüfe den Schemapunktindex...

34
00:01:47,740 --> 00:01:51,530
‫Tour auf eins gesetzt, und auch hier ist es nicht wirklich wichtig, ob es in

35
00:01:51,530 --> 00:01:53,563
‫diesem Fall eins oder minus eins ist.

36
00:01:55,310 --> 00:01:58,180
‫Und Benutzer auch auf eins gesetzt, okay.

37
00:01:58,180 --> 00:02:00,940
‫Das ist also wieder ähnlich zu dem, was

38
00:02:00,940 --> 00:02:03,980
‫wir zuvor gemacht haben, aber hier werden wir es auf

39
00:02:03,980 --> 00:02:07,140
‫die nächste Ebene bringen und jetzt ein Objekt für Optionen hinzufügen.

40
00:02:07,140 --> 00:02:10,109
‫Und die Option, die wir hier festlegen werden,

41
00:02:10,109 --> 00:02:11,350
‫ist unique (typing) set

42
00:02:11,350 --> 00:02:12,373
‫to true.

43
00:02:15,010 --> 00:02:16,240
‫Und das ist es tatsächlich.

44
00:02:16,240 --> 00:02:18,700
‫Damit wird genau das erreicht, was wir wollen.

45
00:02:18,700 --> 00:02:21,290
‫Jetzt muss jede Kombination aus Tour und

46
00:02:21,290 --> 00:02:22,903
‫Benutzer immer einzigartig sein.

47
00:02:23,780 --> 00:02:26,050
‫Also lassen Sie uns hier

48
00:02:26,050 --> 00:02:29,640
‫ein oder zwei speichern und dann testen Sie es tatsächlich.

49
00:02:29,640 --> 00:02:31,360
‫Als ich das jetzt zum ersten Mal

50
00:02:31,360 --> 00:02:33,550
‫getestet habe, hat es tatsächlich nicht auf Anhieb funktioniert.

51
00:02:33,550 --> 00:02:36,530
‫Wirklich, es hat erst am nächsten Tag angefangen zu funktionieren,

52
00:02:36,530 --> 00:02:39,610
‫und ich weiß nicht genau warum, aber wenn dir das

53
00:02:39,610 --> 00:02:41,910
‫passiert, dann mach dir keine Sorgen, okay.

54
00:02:41,910 --> 00:02:43,840
‫Und vielleicht passiert es sogar jetzt, während

55
00:02:43,840 --> 00:02:45,240
‫ich dieses Video aufnehme.

56
00:02:46,080 --> 00:02:49,970
‫Wie auch immer, im Moment sollte es keine Bewertungen zu der Tour

57
00:02:49,970 --> 00:02:51,963
‫geben, an der wir arbeiteten.

58
00:02:52,810 --> 00:02:57,110
‫Also nur um sicherzustellen, dass wir immer noch null

59
00:02:57,110 --> 00:03:01,010
‫Bewertungen haben und auch die Bewertungen leer sind.

60
00:03:01,010 --> 00:03:02,840
‫Und so lassen Sie uns jetzt

61
00:03:02,840 --> 00:03:05,223
‫noch einmal eine neue Rezension zu dieser Tour erstellen.

62
00:03:06,720 --> 00:03:07,553
‫Okay.

63
00:03:09,800 --> 00:03:13,490
‫Dies ist also eine Bewertung, also ein Benutzer und eine Bewertung.

64
00:03:13,490 --> 00:03:17,660
‫Also das sollte natürlich funktionieren, aber wenn ich das jetzt nochmal

65
00:03:17,660 --> 00:03:22,000
‫schicke und sagen wir mal ich stelle es auf vier und sage

66
00:03:22,000 --> 00:03:25,290
‫okay, dann sollte das nicht funktionieren dürfen, okay.

67
00:03:25,290 --> 00:03:27,310
‫Denken Sie nur daran, dass es aufgrund

68
00:03:27,310 --> 00:03:30,170
‫des Problems, das ich Ihnen zuvor erzählt habe, möglicherweise noch funktioniert, okay.

69
00:03:30,170 --> 00:03:34,253
‫Daher wird diese Art von Index manchmal nicht sofort festgelegt.

70
00:03:35,850 --> 00:03:39,120
‫Oh, aber in meinem Fall hier hat es auf Anhieb funktioniert.

71
00:03:39,120 --> 00:03:43,307
‫Wir erhalten hier also diesen doppelten Schlüsselfehler für diesen Index, und

72
00:03:43,307 --> 00:03:47,210
‫das ist genau der Index, den wir gerade erstellt haben.

73
00:03:47,210 --> 00:03:50,063
‫Schauen wir uns das auch hier in Compass an.

74
00:03:52,090 --> 00:03:54,153
‫Hier ist es also tatsächlich nicht, und

75
00:03:55,547 --> 00:03:57,970
‫deshalb werde ich es genauso machen wie zuvor und

76
00:03:57,970 --> 00:03:59,873
‫im Grunde wieder eine Verbindung herstellen.

77
00:04:04,210 --> 00:04:07,893
‫Gehen Sie also zu den Neuheiten und verbinden Sie sich dann hier.

78
00:04:12,240 --> 00:04:13,360
‫Natur...

79
00:04:16,760 --> 00:04:17,593
‫Dann...

80
00:04:19,390 --> 00:04:20,453
‫Natürlich sind

81
00:04:21,520 --> 00:04:24,690
‫die Touren und unsere Indizes hier jetzt diese vier.

82
00:04:24,690 --> 00:04:26,640
‫Und das ist dasjenige, das

83
00:04:26,640 --> 00:04:29,920
‫wir gerade erstellt haben, oder eigentlich nicht (lacht), okay.

84
00:04:29,920 --> 00:04:32,290
‫Aus irgendeinem Grund ist es nicht hier,

85
00:04:32,290 --> 00:04:34,400
‫also habe ich es vorhin gesagt,

86
00:04:34,400 --> 00:04:38,083
‫aber das macht nichts, denn es funktioniert tatsächlich in unserem Code.

87
00:04:39,840 --> 00:04:43,510
‫Okay, wir konnten also keine zwei Bewertungen

88
00:04:43,510 --> 00:04:46,220
‫desselben Benutzers erstellen, okay.

89
00:04:46,220 --> 00:04:48,480
‫Aber wenn Sie sich jetzt als

90
00:04:48,480 --> 00:04:52,740
‫jemand anderes einloggen, gut, dann werden wir diese Bewertung sicherlich veröffentlichen können.

91
00:04:52,740 --> 00:04:55,530
‫Mal sehen, welchen Benutzer wir jetzt verwenden könnten.

92
00:04:55,530 --> 00:04:58,973
‫Holen wir also alle Benutzer hierher, die ich

93
00:05:01,160 --> 00:05:04,970
‫nicht kann, weil ich kein Admin bin (lacht), okay.

94
00:05:04,970 --> 00:05:07,070
‫Also habe ich diesen

95
00:05:07,070 --> 00:05:10,500
‫Teil vergessen und werde ihn einfach von Compass abrufen.

96
00:05:10,500 --> 00:05:12,003
‫Manchmal ist das einfach einfacher.

97
00:05:13,230 --> 00:05:15,410
‫Dies ist also eine Anleitung,

98
00:05:15,410 --> 00:05:19,443
‫ein Benutzer (ruft), also verwenden wir einfach diesen Eduardo hier oder so.

99
00:05:22,120 --> 00:05:26,943
‫Melden wir uns also als diese Person als dieser Benutzer an.

100
00:05:31,120 --> 00:05:34,270
‫Ja, mit Erfolg, und jetzt sollte es

101
00:05:34,270 --> 00:05:39,000
‫uns erlaubt sein, eine Bewertung zu erstellen, und tatsächlich ist sie hier, okay.

102
00:05:39,000 --> 00:05:40,483
‫Und wenn wir

103
00:05:41,720 --> 00:05:45,970
‫das jetzt aktualisieren, dann haben wir unsere beiden Bewertungen, super.

104
00:05:45,970 --> 00:05:48,620
‫Testen Sie es jetzt nur noch einmal. Wenn

105
00:05:48,620 --> 00:05:51,510
‫wir es also erneut senden, wird es nicht funktionieren,

106
00:05:51,510 --> 00:05:53,530
‫da wir wieder einen Duplikatsfehler haben.

107
00:05:53,530 --> 00:05:54,640
‫Genial.

108
00:05:54,640 --> 00:05:57,110
‫Ich wollte Ihnen nur noch eine

109
00:05:57,110 --> 00:06:00,693
‫Sache zeigen, und dafür melde ich mich als weitere

110
00:06:03,040 --> 00:06:07,300
‫Person an, okay, damit ich dann eine weitere Bewertung erstellen kann.

111
00:06:07,300 --> 00:06:10,523
‫Also werde ich dieses Mal dieser Max Smith sein.

112
00:06:12,150 --> 00:06:14,203
‫Und so loggen wir uns ein.

113
00:06:17,140 --> 00:06:18,420
‫(Mausklicks) Okay,

114
00:06:18,420 --> 00:06:21,350
‫jetzt bin ich also offiziell Max

115
00:06:21,350 --> 00:06:23,973
‫und kann diese Rezension posten.

116
00:06:27,500 --> 00:06:28,453
‫Mit fünf

117
00:06:30,840 --> 00:06:32,210
‫schaffe ich das, und

118
00:06:32,210 --> 00:06:35,123
‫jetzt möchte ich einen Blick auf den Durchschnitt werfen.

119
00:06:36,080 --> 00:06:40,660
‫Okay, im Moment ist es diese 4. 6666, was

120
00:06:40,660 --> 00:06:43,040
‫natürlich nicht gut aussieht.

121
00:06:43,040 --> 00:06:45,090
‫Und wir könnten dies im Frontend beheben.

122
00:06:45,090 --> 00:06:47,330
‫Wenn wir diese Daten zum Beispiel von

123
00:06:47,330 --> 00:06:49,490
‫der API anfordern und dann

124
00:06:49,490 --> 00:06:52,010
‫anzeigen, könnten wir diese Rundung im Frontend durchführen.

125
00:06:52,010 --> 00:06:55,260
‫Aber eigentlich möchte ich es gleich hier am Backend

126
00:06:55,260 --> 00:06:59,250
‫machen, damit der Endanwender schon diesen endgültigen gerundeten Wert bekommt, der

127
00:06:59,250 --> 00:07:02,980
‫in diesem Fall 4 wäre. 7, richtig?

128
00:07:02,980 --> 00:07:06,340
‫Und dafür zeige ich euch ein kleines neues Feature in

129
00:07:06,340 --> 00:07:09,230
‫Mongoose, das wir noch nicht genutzt haben.

130
00:07:09,230 --> 00:07:12,323
‫Kommen wir also zu unserem Tourmodell und

131
00:07:13,220 --> 00:07:15,070
‫zu diesem Durchschnitt, also

132
00:07:15,070 --> 00:07:16,410
‫gleich hier.

133
00:07:16,410 --> 00:07:19,132
‫Und so können wir jetzt eine Setter-Funktion verwenden.

134
00:07:19,132 --> 00:07:21,100
‫(Tippen) Also setze und

135
00:07:21,100 --> 00:07:24,070
‫diese Funktion wird jedes Mal ausgeführt, wenn ein

136
00:07:24,070 --> 00:07:27,257
‫neuer Wert für dieses Feld gesetzt wird, okay.

137
00:07:27,257 --> 00:07:31,180
‫Daher geben wir hier normalerweise eine Callback-Funktion an, die

138
00:07:31,180 --> 00:07:33,003
‫den aktuellen Wert empfängt.

139
00:07:34,570 --> 00:07:37,610
‫Und in diesem Fall gibt es im Grunde diesen Wert

140
00:07:37,610 --> 00:07:38,533
‫zurück, jedoch gerundet.

141
00:07:39,760 --> 00:07:44,760
‫Wir verwenden also Math Dot Round für den aktuellen Wert, aber das Problem

142
00:07:46,040 --> 00:07:48,610
‫bei Math Dot Round besteht darin,

143
00:07:48,610 --> 00:07:51,240
‫dass Werte auf ganze Zahlen gerundet werden.

144
00:07:51,240 --> 00:07:54,253
‫Wenn wir zum Beispiel so etwas

145
00:07:55,412 --> 00:07:58,830
‫hätten, würde es auf fünf gerundet, okay.

146
00:07:58,830 --> 00:08:00,410
‫Und das ist nicht das, was wir wollen.

147
00:08:00,410 --> 00:08:03,610
‫Wir wollen, dass es auf 4 gerundet wird. 7.

148
00:08:03,610 --> 00:08:05,310
‫Also werden wir hier

149
00:08:05,310 --> 00:08:10,037
‫einen Trick anwenden, der ziemlich üblich ist, also multiplizieren wir dies mit 10, und

150
00:08:10,037 --> 00:08:13,647
‫damit würden wir 46 erhalten. 666, und

151
00:08:14,580 --> 00:08:17,960
‫dann wäre diese gerundet 47.

152
00:08:17,960 --> 00:08:21,120
‫Und dann teilen wir die Ergebnisse wieder durch 10, und das ist

153
00:08:21,120 --> 00:08:22,810
‫dann 4. 7.

154
00:08:26,470 --> 00:08:29,180
‫Alles klar, und das ist es tatsächlich.

155
00:08:29,180 --> 00:08:31,790
‫Hier also wieder eine Setter-Funktion, die

156
00:08:31,790 --> 00:08:34,710
‫jedes Mal ausgeführt wird, wenn ein neuer Wert

157
00:08:34,710 --> 00:08:36,903
‫für das Bewertungsdurchschnittsfeld vorhanden ist.

158
00:08:38,640 --> 00:08:42,650
‫Um dies zu testen, aktualisieren wir einfach diese letzte Bewertung,

159
00:08:42,650 --> 00:08:45,743
‫die wir hinzugefügt haben, die eine Fünf hatte,

160
00:08:49,080 --> 00:08:52,030
‫und belassen wir sie bei fünf.

161
00:08:52,030 --> 00:08:54,830
‫Alles, was wir im Grunde tun wollen, ist also, die

162
00:08:54,830 --> 00:08:57,283
‫Funktion, die diesen Durchschnitt erzeugt, erneut auszuführen.

163
00:08:59,490 --> 00:09:02,910
‫Also wenn ich das jetzt mache und jetzt meine Tour bekomme,

164
00:09:02,910 --> 00:09:05,853
‫sollten wir 4 bekommen. 7 hier als Durchschnitt.

165
00:09:06,780 --> 00:09:09,620
‫Und ja, los geht's.

166
00:09:09,620 --> 00:09:13,210
‫Toll, und das war es eigentlich schon für dieses Video.

167
00:09:13,210 --> 00:09:15,940
‫Also haben wir diese nette Setter-Funktion erstellt,

168
00:09:15,940 --> 00:09:18,940
‫und wir haben hier diesen einzigartigen zusammengesetzten Index

169
00:09:18,940 --> 00:09:21,000
‫erstellt, um sicherzustellen, dass ein

170
00:09:21,000 --> 00:09:24,053
‫Benutzer nicht mehrere Bewertungen für dieselbe Tour schreiben kann.

