﻿1
00:00:01,210 --> 00:00:03,670
‫Sprecher: Lassen Sie uns nun weiter an unserer API arbeiten.

2
00:00:04,530 --> 00:00:06,620
‫In den nächsten

3
00:00:06,620 --> 00:00:08,840
‫Videos werden wir einige gängige

4
00:00:08,840 --> 00:00:12,440
‫API-Funktionen implementieren, die die Verwendung einer API für

5
00:00:12,440 --> 00:00:14,950
‫alle Benutzer einfacher und angenehmer machen.

6
00:00:14,950 --> 00:00:15,940
‫Und in

7
00:00:15,940 --> 00:00:17,963
‫diesem Vortrag beginnen wir mit dem Filtern.

8
00:00:19,340 --> 00:00:22,830
‫Die erste Funktion, die wir implementieren werden, besteht also

9
00:00:22,830 --> 00:00:26,000
‫darin, dem Benutzer zu ermöglichen, Daten grundsätzlich mithilfe einer

10
00:00:26,000 --> 00:00:27,563
‫Abfragezeichenfolge zu filtern.

11
00:00:28,890 --> 00:00:32,233
‫Lassen Sie mich Ihnen nur sagen, was eine Abfragezeichenfolge mit Postman ist.

12
00:00:36,610 --> 00:00:39,993
‫Also, lass uns all diese Typen schließen.

13
00:00:46,150 --> 00:00:47,683
‫In Ordung.

14
00:00:47,683 --> 00:00:50,350
‫Wo Filterung Sinn machen wird, ist

15
00:00:50,350 --> 00:00:52,793
‫hier auf dieser Get-All-Tours-Route.

16
00:00:53,750 --> 00:00:55,940
‫Denn dieser bekommt, wie

17
00:00:55,940 --> 00:00:58,720
‫der Name schon sagt, alle Touren.

18
00:00:58,720 --> 00:01:02,370
‫Hier möchten wir es dem Benutzer ermöglichen, die Daten zu

19
00:01:02,370 --> 00:01:04,840
‫filtern, sodass er nicht alle Daten

20
00:01:04,840 --> 00:01:08,123
‫erhält, sondern nur die Daten, die dem Filter entsprechen.

21
00:01:09,340 --> 00:01:12,290
‫Auf diese Weise können wir dem Nutzer grundsätzlich eine

22
00:01:12,290 --> 00:01:14,750
‫sehr einfache Abfrage der Daten ermöglichen.

23
00:01:14,750 --> 00:01:16,480
‫Wieder mit der Abfragezeichenfolge.

24
00:01:16,480 --> 00:01:18,850
‫Und die Abfragezeichenfolge sieht ungefähr so aus.

25
00:01:18,850 --> 00:01:20,340
‫Und ich bin sicher, Sie haben es gesehen.

26
00:01:20,340 --> 00:01:23,120
‫Wir beginnen also mit einem

27
00:01:23,120 --> 00:01:26,663
‫Fragezeichen und können dann einfach einige Feldwertpaare angeben.

28
00:01:28,420 --> 00:01:30,360
‫Nehmen wir also

29
00:01:30,360 --> 00:01:33,620
‫an, wir wollten für eine Dauer von fünf

30
00:01:33,620 --> 00:01:36,573
‫und gleichzeitig einen Schwierigkeitsgrad von einfach filtern.

31
00:01:40,500 --> 00:01:44,690
‫So können wir ganz einfach eine Abfragezeichenfolge wie diese erstellen.

32
00:01:44,690 --> 00:01:46,860
‫Es beginnt also wieder mit diesem

33
00:01:46,860 --> 00:01:48,800
‫Fragezeichen, und dann können

34
00:01:48,800 --> 00:01:51,723
‫wir in diesem Format beliebig viele Schlüssel-Wert-Paare angeben.

35
00:01:53,000 --> 00:01:54,860
‫Und jetzt erkennt unsere

36
00:01:54,860 --> 00:01:57,450
‫Postman-Anwendung hier dies tatsächlich und parst

37
00:01:57,450 --> 00:02:00,420
‫diese Zeichenfolge im Grunde hier und legt den

38
00:02:00,420 --> 00:02:04,140
‫Schlüssel und die Werte hier in dieser Registerkarte "Params" ab.

39
00:02:04,140 --> 00:02:06,963
‫Wir könnten also auch hier den Schlüssel und die Werte angeben.

40
00:02:07,890 --> 00:02:11,110
‫Sagen wir also test, setzen Sie es auf 23, und

41
00:02:11,110 --> 00:02:12,690
‫Sie sehen hier, dass

42
00:02:12,690 --> 00:02:14,483
‫es tatsächlich der Abfragezeichenfolge hinzugefügt wurde.

43
00:02:15,370 --> 00:02:18,740
‫Das ist also eine sehr nette Art, wie Postman uns hier hilft.

44
00:02:18,740 --> 00:02:21,150
‫Denn jetzt können wir zum Beispiel,

45
00:02:21,150 --> 00:02:24,260
‫während wir testen, diese ein- und ausschalten und

46
00:02:24,260 --> 00:02:25,610
‫Sie sehen, dass

47
00:02:25,610 --> 00:02:27,573
‫der Abfragestring hier entsprechend reagiert.

48
00:02:28,970 --> 00:02:32,940
‫Wie auch immer, wir brauchen jetzt eine Möglichkeit, auf diese Daten

49
00:02:32,940 --> 00:02:35,883
‫in einer Abfragezeichenfolge in unserer Express-Anwendung zuzugreifen.

50
00:02:36,730 --> 00:02:39,210
‫Aber das ist zum Glück für uns

51
00:02:39,210 --> 00:02:42,260
‫ganz einfach, denn Express hat sich schon darum gekümmert.

52
00:02:42,260 --> 00:02:44,690
‫Das ist also nur eines von vielen

53
00:02:44,690 --> 00:02:48,420
‫vielen Dingen, die Express für uns tut, um die NodeJS-Entwicklung

54
00:02:48,420 --> 00:02:50,563
‫wirklich viel schneller zu machen.

55
00:02:52,420 --> 00:02:55,170
‫Lassen Sie mich es Ihnen hier zeigen, tatsächlich in der Konsole.

56
00:02:57,810 --> 00:03:01,380
‫Diese Daten befinden sich also auf einer Anfrage, was sinnvoll ist,

57
00:03:01,380 --> 00:03:04,013
‫und dann in einem Feld namens query.

58
00:03:04,980 --> 00:03:07,490
‫Die Anfragepunktabfrage sollte uns also ein Objekt

59
00:03:07,490 --> 00:03:10,630
‫liefern, das mit den Daten aus der Abfragezeichenfolge schön

60
00:03:10,630 --> 00:03:11,730
‫formatiert ist.

61
00:03:12,760 --> 00:03:13,593
‫Sparen Sie.

62
00:03:14,530 --> 00:03:16,630
‫Und beachten Sie, wie ich

63
00:03:16,630 --> 00:03:20,150
‫es tatsächlich der Funktion zum Abrufen aller Touren hinzugefügt habe.

64
00:03:20,150 --> 00:03:22,800
‫Wir führen diese Art der Filterung also wieder in der

65
00:03:22,800 --> 00:03:25,323
‫Route durch, auf der wir alle Touren erhalten möchten.

66
00:03:27,140 --> 00:03:30,373
‫Testen wir es jetzt mit genau dieser Abfragezeichenfolge.

67
00:03:31,400 --> 00:03:32,920
‫Habe die Anfrage gesendet.

68
00:03:32,920 --> 00:03:36,333
‫Und zurückkommend, hier haben wir das Objekt.

69
00:03:37,170 --> 00:03:40,420
‫Lassen Sie uns das hier tatsächlich größer machen, damit Sie

70
00:03:40,420 --> 00:03:41,720
‫es sehen können.

71
00:03:41,720 --> 00:03:43,650
‫Das funktioniert nicht wirklich.

72
00:03:43,650 --> 00:03:45,820
‫Manchmal weiß ich, dass manche Leute den

73
00:03:45,820 --> 00:03:47,630
‫unteren Bildschirmrand nicht sehen können.

74
00:03:47,630 --> 00:03:49,080
‫Lass es mich hier einfach nochmal machen.

75
00:03:51,280 --> 00:03:52,942
‫Und so geht's.

76
00:03:52,942 --> 00:03:55,990
‫Wir haben das Objekt, dessen Dauer auf fünf und

77
00:03:55,990 --> 00:03:58,200
‫der Schwierigkeitsgrad auf leicht eingestellt ist.

78
00:03:58,200 --> 00:04:00,460
‫Sie sehen also, dass Express diese

79
00:04:00,460 --> 00:04:04,250
‫Zeichenfolge sehr schön in dieses einfach zu verwendende Objekt geparst hat.

80
00:04:04,250 --> 00:04:06,330
‫Eine Sache, die mir hier aufgefallen ist, ist,

81
00:04:06,330 --> 00:04:08,380
‫dass wir tatsächlich das Protokoll vermissen,

82
00:04:08,380 --> 00:04:10,440
‫das wir hier in der Konsole einfacher hatten.

83
00:04:10,440 --> 00:04:12,540
‫Schauen wir uns an, warum das passiert.

84
00:04:15,431 --> 00:04:18,430
‫Aus irgendeinem Grund haben wir jetzt die Anwendung,

85
00:04:18,430 --> 00:04:21,310
‫bevor wir die Umgebungsvariable tatsächlich lesen.

86
00:04:21,310 --> 00:04:24,113
‫Auf diese Weise erhält die Anwendung keinen Zugriff darauf.

87
00:04:25,010 --> 00:04:27,600
‫Ich dachte, ich hätte das schon mal behoben, aber aus irgendeinem

88
00:04:27,600 --> 00:04:29,300
‫Grund ist es jetzt wieder da.

89
00:04:30,340 --> 00:04:32,390
‫Geben Sie es hier noch einmal ab.

90
00:04:32,390 --> 00:04:33,690
‫Und das werde ich noch einmal versuchen.

91
00:04:36,180 --> 00:04:38,933
‫Jetzt bekommen wir unser Logging zurück.

92
00:04:40,200 --> 00:04:43,750
‫Eine Get-Anfrage an diese URL und dann mit

93
00:04:43,750 --> 00:04:45,963
‫diesen restlichen Daten hier.

94
00:04:48,260 --> 00:04:50,600
‫Wie auch immer, verwenden wir diese

95
00:04:50,600 --> 00:04:53,200
‫Daten nun tatsächlich, um unsere Filterung zu implementieren.

96
00:04:53,200 --> 00:04:55,840
‫Aber bevor wir das tun können, muss ich Ihnen

97
00:04:55,840 --> 00:04:58,440
‫sagen, dass es in Mongoose tatsächlich zwei Möglichkeiten

98
00:04:58,440 --> 00:05:00,120
‫gibt, Datenbankabfragen zu schreiben.

99
00:05:00,120 --> 00:05:03,050
‫Die erste besteht darin, einfach das Filterobjekt zu

100
00:05:03,050 --> 00:05:06,490
‫verwenden, wie wir es im Einführungsabschnitt von MongoDB getan haben.

101
00:05:06,490 --> 00:05:08,690
‫Rechts? Erinnere dich daran?

102
00:05:08,690 --> 00:05:12,333
‫Die zweite Möglichkeit besteht darin, einige spezielle Mongoose-Methoden zu verwenden.

103
00:05:13,590 --> 00:05:16,505
‫Lassen Sie mich Ihnen das nur ganz schnell zeigen.

104
00:05:16,505 --> 00:05:19,420
‫Mit dem Filterobjekt würden wir es so machen.

105
00:05:19,420 --> 00:05:21,910
‫Wir beginnen mit der Suche hier, und dann können

106
00:05:21,910 --> 00:05:23,570
‫wir dort ein Filterobjekt übergeben.

107
00:05:23,570 --> 00:05:25,900
‫Und das habe ich schon vorher erwähnt.

108
00:05:25,900 --> 00:05:28,410
‫Auch hier funktioniert es genauso wie

109
00:05:28,410 --> 00:05:30,650
‫bei einer normalen MongoDB-Abfrage.

110
00:05:30,650 --> 00:05:33,160
‫Wir könnten jetzt sagen, dass die Dauer auf

111
00:05:34,570 --> 00:05:35,657
‫fünf gesetzt wurde.

112
00:05:35,657 --> 00:05:36,663
‫Und dann,

113
00:05:39,320 --> 00:05:42,253
‫Schwierigkeit, stellen Sie es auf leicht.

114
00:05:44,300 --> 00:05:47,150
‫Das ist genau die Abfragezeichenfolge, die wir vorher hatten, und jetzt

115
00:05:47,150 --> 00:05:48,960
‫kodiere ich sie hier hart, nur um

116
00:05:48,960 --> 00:05:50,860
‫Ihnen die zwei verschiedenen Möglichkeiten zum Schreiben von

117
00:05:50,860 --> 00:05:52,423
‫Abfragen in Mongoose zu zeigen.

118
00:05:53,318 --> 00:05:54,518
‫Lassen Sie uns das testen.

119
00:05:58,220 --> 00:06:00,453
‫Sie sehen, wir erhalten jetzt nur zwei Ergebnisse.

120
00:06:01,290 --> 00:06:03,193
‫Geben wir uns hier etwas Raum.

121
00:06:04,810 --> 00:06:05,760
‫In Ordung.

122
00:06:05,760 --> 00:06:08,870
‫Wir sehen die beiden Ergebnisse und tatsächlich

123
00:06:08,870 --> 00:06:10,890
‫haben beide eine

124
00:06:10,890 --> 00:06:15,890
‫Dauer von fünf, also hier und hier, und beide sind einfach.

125
00:06:15,930 --> 00:06:17,443
‫Einfach und leicht.

126
00:06:18,350 --> 00:06:20,563
‫Unser Filter hat also gut funktioniert.

127
00:06:21,675 --> 00:06:24,710
‫Dies ist die erste Möglichkeit, eine Abfrage zu schreiben.

128
00:06:24,710 --> 00:06:27,650
‫Ganz normal, wie wir es schon gewohnt sind, aber

129
00:06:27,650 --> 00:06:29,103
‫es geht auch anders.

130
00:06:30,790 --> 00:06:32,993
‫Das darf ich dir auch zeigen.

131
00:06:37,570 --> 00:06:39,910
‫Auch hier beginnen wir genau auf die gleiche

132
00:06:39,910 --> 00:06:41,690
‫Weise, aber der Unterschied besteht

133
00:06:41,690 --> 00:06:44,150
‫darin, dass wir eine spezielle Mongoose-Methode verketten, um

134
00:06:44,150 --> 00:06:47,523
‫die Abfrage im Wesentlichen ähnlich wie diese zu erstellen, die wir haben.

135
00:06:49,540 --> 00:06:50,563
‫Also sagen

136
00:06:51,730 --> 00:06:52,563
‫wir,

137
00:06:54,910 --> 00:06:55,780
‫wo die

138
00:06:58,840 --> 00:07:00,343
‫Dauer gleich fünf ist.

139
00:07:01,810 --> 00:07:03,630
‫Dann auch, wo die

140
00:07:04,710 --> 00:07:06,180
‫Schwierigkeit, die in

141
00:07:06,180 --> 00:07:08,023
‫Anführungszeichen stehen muss, gleich

142
00:07:11,420 --> 00:07:12,253
‫leicht

143
00:07:13,170 --> 00:07:14,003
‫ist.

144
00:07:17,270 --> 00:07:19,620
‫Diese Abfrage hier wird genau

145
00:07:19,620 --> 00:07:22,500
‫dieselbe sein wie diese, aber wiederum

146
00:07:22,500 --> 00:07:24,740
‫mit speziellen Mongoose-Methoden geschrieben.

147
00:07:24,740 --> 00:07:27,240
‫Und es gibt natürlich noch jede Menge andere Methoden.

148
00:07:27,240 --> 00:07:30,980
‫Anstelle von Gleichen können wir beispielsweise weniger oder gleich oder nur

149
00:07:30,980 --> 00:07:34,060
‫weniger als haben, oder Sie können die Ergebnisse

150
00:07:34,060 --> 00:07:37,520
‫auch sortieren oder die Anzahl der Ergebnisse begrenzen und wirklich

151
00:07:37,520 --> 00:07:39,020
‫alle möglichen Dinge.

152
00:07:41,057 --> 00:07:43,180
‫Bestimmt werden wir einige davon in

153
00:07:43,180 --> 00:07:44,743
‫den nächsten Videos verwenden.

154
00:07:46,050 --> 00:07:48,290
‫Dies mag hier für Sie etwas seltsam

155
00:07:48,290 --> 00:07:51,303
‫aussehen, ist aber in einigen Fällen tatsächlich sehr, sehr nützlich.

156
00:07:52,530 --> 00:07:55,573
‫Nur zum Testen, versuchen Sie es noch einmal.

157
00:07:57,010 --> 00:07:59,953
‫Und tatsächlich erhalten wir dieselben beiden Ergebnisse.

158
00:08:02,735 --> 00:08:04,590
‫Nun, lassen Sie mich das hier auskommentieren.

159
00:08:04,590 --> 00:08:06,950
‫Ich belasse es hier nur als

160
00:08:06,950 --> 00:08:10,300
‫Referenz, denn im Moment werden wir diese Methode hier verwenden.

161
00:08:10,300 --> 00:08:12,400
‫Und wir werden es verwenden,

162
00:08:12,400 --> 00:08:15,000
‫denn tatsächlich haben wir bereits ein Objekt,

163
00:08:15,000 --> 00:08:16,363
‫das so aussieht.

164
00:08:17,360 --> 00:08:20,300
‫Und das ist eine Punktabfrage.

165
00:08:20,300 --> 00:08:22,193
‫Wenn Sie es vergleichen, sieht dieses Objekt

166
00:08:23,228 --> 00:08:25,128
‫mit diesem Objekt, das Sie hier unten

167
00:08:26,280 --> 00:08:28,173
‫sehen, genau so aus wie dieses.

168
00:08:30,120 --> 00:08:32,130
‫Um einen sehr einfachen

169
00:08:32,130 --> 00:08:37,130
‫Filter zu implementieren, müssen wir in diesem Fall nur sagen req dot query.

170
00:08:37,150 --> 00:08:38,793
‫Versuchen wir das noch einmal.

171
00:08:39,730 --> 00:08:40,803
‫Werde das hier los.

172
00:08:42,650 --> 00:08:46,300
‫Und tatsächlich erhalten wir genau die gleichen beiden Ergebnisse.

173
00:08:46,300 --> 00:08:50,223
‫Versuchen wir es jetzt nur mit Schwierigkeitsgrad einfach.

174
00:08:52,140 --> 00:08:53,993
‫Jetzt erhalten wir vier Ergebnisse.

175
00:08:55,280 --> 00:08:56,700
‫Alle haben

176
00:08:56,700 --> 00:08:58,463
‫natürlich den Schwierigkeitsgrad leicht.

177
00:09:00,540 --> 00:09:03,100
‫Unser Filter, unser ganz grundlegender Filter,

178
00:09:03,100 --> 00:09:04,880
‫funktioniert jetzt tatsächlich.

179
00:09:04,880 --> 00:09:06,870
‫Das Problem bei dieser Implementierung

180
00:09:06,870 --> 00:09:09,650
‫ist, dass sie eigentlich viel zu einfach ist.

181
00:09:09,650 --> 00:09:11,690
‫Das liegt daran, dass wir später

182
00:09:11,690 --> 00:09:13,370
‫andere Abfrageparameter haben werden.

183
00:09:13,370 --> 00:09:16,730
‫Sortieren Sie beispielsweise für die Sortierfunktion oder

184
00:09:16,730 --> 00:09:18,653
‫page für die Paginierung.

185
00:09:19,610 --> 00:09:21,040
‫Wir müssen sicherstellen,

186
00:09:21,040 --> 00:09:24,180
‫dass wir diese nicht in unserer Datenbank abfragen.

187
00:09:24,180 --> 00:09:25,883
‫Wenn wir hier

188
00:09:27,360 --> 00:09:29,893
‫zum Beispiel Seite gleich zwei hinzugefügt

189
00:09:30,970 --> 00:09:33,993
‫hätten, würden wir natürlich kein Ergebnis erhalten.

190
00:09:35,130 --> 00:09:36,300
‫Lass mich dir das zeigen.

191
00:09:36,300 --> 00:09:38,280
‫Und tatsächlich erhalten wir kein Ergebnis,

192
00:09:38,280 --> 00:09:40,560
‫da es in dieser Sammlung kein Dokument gibt,

193
00:09:40,560 --> 00:09:42,593
‫bei dem die Seite auf zwei gesetzt ist.

194
00:09:43,480 --> 00:09:46,200
‫Wir möchten diesen Parameter hier oder dieses Feld,

195
00:09:46,200 --> 00:09:49,170
‫page, nur verwenden, um die Paginierung zu implementieren und

196
00:09:49,170 --> 00:09:51,593
‫nicht wirklich in der Datenbank abzufragen.

197
00:09:53,450 --> 00:09:54,870
‫Was wir also

198
00:09:54,870 --> 00:09:57,810
‫tun müssen, ist, diese speziellen Feldnamen grundsätzlich aus

199
00:09:57,810 --> 00:10:00,883
‫unserer Abfragezeichenfolge auszuschließen, bevor wir die Filterung durchführen.

200
00:10:02,680 --> 00:10:05,540
‫Lassen Sie uns nun vorangehen und das implementieren.

201
00:10:05,540 --> 00:10:08,200
‫Was wir tun werden, ist,

202
00:10:08,200 --> 00:10:12,333
‫zunächst eine flache Kopie des Request-Dot-Query-Objekts zu erstellen.

203
00:10:15,690 --> 00:10:17,670
‫Nennen wir es Abfrageobjekt.

204
00:10:17,670 --> 00:10:20,030
‫Hier brauchen wir wirklich eine Hardcopy.

205
00:10:20,030 --> 00:10:23,560
‫Wir können nicht einfach Punktabfrage anfordern, denn wenn Sie

206
00:10:23,560 --> 00:10:25,570
‫dann etwas aus diesem

207
00:10:25,570 --> 00:10:28,030
‫Objekt löschen würden, würden wir es

208
00:10:28,030 --> 00:10:30,700
‫auch aus dem Punktabfrageobjekt req löschen.

209
00:10:30,700 --> 00:10:32,170
‫Und das liegt daran,

210
00:10:32,170 --> 00:10:35,260
‫dass in JavaScript, wenn wir eine Variable auf ein anderes

211
00:10:35,260 --> 00:10:37,490
‫Objekt setzen, diese neue Variable im Grunde nur

212
00:10:37,490 --> 00:10:39,683
‫eine Referenz auf dieses ursprüngliche Objekt ist.

213
00:10:41,030 --> 00:10:43,770
‫Also brauchen wir hier wirklich eine Hardcopy.

214
00:10:43,770 --> 00:10:46,310
‫In JavaScript gibt es dafür nicht wirklich eine

215
00:10:46,310 --> 00:10:49,020
‫eingebaute Methode, aber ein sehr netter Trick, den wir

216
00:10:49,020 --> 00:10:53,520
‫seit ES6 verwenden können, besteht darin, zuerst die Strukturierung zu verwenden, die wir verwenden,

217
00:10:53,520 --> 00:10:55,960
‫indem wir Punkt Punkt Punkt verwenden.

218
00:10:55,960 --> 00:10:58,270
‫Und dann können wir daraus einfach ein

219
00:10:58,270 --> 00:10:59,663
‫neues Objekt erstellen.

220
00:11:01,290 --> 00:11:02,123
‫Genau wie dieser.

221
00:11:03,260 --> 00:11:05,420
‫Diese Strukturierung hier, diese drei

222
00:11:05,420 --> 00:11:08,683
‫Punkte, werden im Grunde alle Felder aus dem Objekt entfernen.

223
00:11:09,860 --> 00:11:11,810
‫Hier mit den geschweiften Klammern

224
00:11:11,810 --> 00:11:13,990
‫erstellen wir einfach ein neues Objekt.

225
00:11:13,990 --> 00:11:15,940
‫Wir haben also ein neues

226
00:11:15,940 --> 00:11:18,070
‫Objekt, das im Grunde alle Schlüssel-Wert-Paare

227
00:11:18,070 --> 00:11:21,053
‫enthält, die in unserem req dot Query-Objekt enthalten waren.

228
00:11:23,020 --> 00:11:24,330
‫Das ist also eine Kopie.

229
00:11:24,330 --> 00:11:26,450
‫Lassen Sie uns nun ein Array

230
00:11:26,450 --> 00:11:28,633
‫aller Felder erstellen, die wir ausschließen möchten.

231
00:11:31,610 --> 00:11:34,040
‫Ich nenne das ausgeschlossene Felder.

232
00:11:34,040 --> 00:11:37,090
‫Und dann wollen wir die Seite ausschließen, also die,

233
00:11:37,090 --> 00:11:38,400
‫die ich Ihnen

234
00:11:38,400 --> 00:11:40,250
‫gerade in Postman erzählt habe.

235
00:11:40,250 --> 00:11:42,150
‫Dann möchten wir auch

236
00:11:43,170 --> 00:11:44,440
‫die Sortierung

237
00:11:44,440 --> 00:11:46,053
‫ausschließen, wir möchten das

238
00:11:47,890 --> 00:11:50,533
‫Limit ausschließen und wir möchten Felder ausschließen.

239
00:11:52,160 --> 00:11:54,940
‫Wir werden alle Funktionen zum

240
00:11:54,940 --> 00:11:58,210
‫Paging, Sortieren, Einschränken und Auswählen nur einiger

241
00:11:58,210 --> 00:12:01,140
‫bestimmter Felder später in den nächsten

242
00:12:01,140 --> 00:12:02,690
‫Videos implementieren.

243
00:12:03,750 --> 00:12:05,900
‫Als nächstes müssen wir

244
00:12:05,900 --> 00:12:08,610
‫grundsätzlich alle diese Felder aus unserem

245
00:12:08,610 --> 00:12:10,230
‫Abfrageobjekt entfernen.

246
00:12:10,230 --> 00:12:11,690
‫Und dazu werden

247
00:12:11,690 --> 00:12:13,523
‫wir diese Felder durchlaufen.

248
00:12:14,660 --> 00:12:15,860
‫Also ausgeschlossene

249
00:12:17,690 --> 00:12:19,070
‫Felder für jeden.

250
00:12:19,070 --> 00:12:20,390
‫Und wir verwenden für

251
00:12:20,390 --> 00:12:22,423
‫jedes, weil wir kein neues Array speichern möchten.

252
00:12:24,150 --> 00:12:25,840
‫Dann können wir für

253
00:12:25,840 --> 00:12:27,863
‫jedes dieser Elemente den Löschoperator verwenden.

254
00:12:30,930 --> 00:12:32,530
‫Und dann wollen wir

255
00:12:32,530 --> 00:12:34,730
‫aus dem Abfrageobjekt das Feld mit

256
00:12:34,730 --> 00:12:36,700
‫dem Namen des Elements löschen,

257
00:12:36,700 --> 00:12:38,820
‫also das aktuelle Element im Array.

258
00:12:38,820 --> 00:12:42,340
‫Auf diese Weise löschen wir zuerst das Seitenfeld, dann

259
00:12:42,340 --> 00:12:45,563
‫die Sortierung, dann das Limit, dann die Felder.

260
00:12:46,560 --> 00:12:48,440
‫Natürlich nur für den Fall, dass es da ist.

261
00:12:48,440 --> 00:12:50,860
‫Wenn zB kein Limitfeld vorhanden ist,

262
00:12:50,860 --> 00:12:54,030
‫wird dieses natürlich nicht gelöscht, da es nicht

263
00:12:54,030 --> 00:12:55,130
‫vorhanden ist.

264
00:12:56,530 --> 00:12:59,233
‫Schauen wir uns nun an, ob das tatsächlich funktioniert.

265
00:13:00,380 --> 00:13:02,530
‫Ich werde req dot

266
00:13:02,530 --> 00:13:05,723
‫query und gleichzeitig unser Abfrageobjekt protokollieren.

267
00:13:08,742 --> 00:13:09,692
‫Geben Sie dies ab.

268
00:13:10,600 --> 00:13:12,060
‫Machen Sie sich jetzt keine Sorgen um unsere Ergebnisse.

269
00:13:12,060 --> 00:13:14,190
‫Ich möchte mir nur unser

270
00:13:14,190 --> 00:13:17,080
‫Abfrageobjekt ansehen, um sicherzustellen, dass diese Logik,

271
00:13:17,080 --> 00:13:19,530
‫die wir hier haben, tatsächlich funktioniert.

272
00:13:21,540 --> 00:13:26,540
‫Fügen wir hier eine Sortierung von eins und ein Limit von 10 hinzu.

273
00:13:27,260 --> 00:13:29,210
‫Diese machen später mehr Sinn.

274
00:13:29,210 --> 00:13:30,540
‫Im Moment füge ich sie

275
00:13:30,540 --> 00:13:32,293
‫nur hinzu, damit ich sie später ausschließen kann.

276
00:13:34,490 --> 00:13:37,120
‫Die Ergebnisse spielen keine Rolle, alles was

277
00:13:37,120 --> 00:13:40,640
‫zählt, ist, dass unsere ursprüngliche Abfrage diese hier ist,

278
00:13:40,640 --> 00:13:42,820
‫und dann hat unser Abfrageobjekt,

279
00:13:42,820 --> 00:13:44,010
‫das wir

280
00:13:44,010 --> 00:13:46,320
‫verwenden werden, nur den Schwierigkeitsgrad einfach.

281
00:13:46,320 --> 00:13:49,723
‫Das liegt daran, dass wir ausgeschlossen, ausgelagert, sortiert und eingeschränkt wurden.

282
00:13:51,000 --> 00:13:53,460
‫Das funktioniert jetzt, also

283
00:13:53,460 --> 00:13:57,033
‫verwenden wir statt req dot query unser query-Objekt.

284
00:13:59,390 --> 00:14:03,000
‫Lassen Sie uns das loswerden und versuchen Sie es erneut.

285
00:14:03,000 --> 00:14:05,080
‫Jetzt sollten wir wieder

286
00:14:05,080 --> 00:14:07,180
‫alle Dokumente abfragen, deren Schwierigkeitsgrad

287
00:14:07,180 --> 00:14:11,473
‫auf "Einfach" eingestellt ist, und all diese anderen Felder ignorieren.

288
00:14:13,256 --> 00:14:14,150
‫Senden Sie das.

289
00:14:14,150 --> 00:14:15,930
‫Und tatsächlich sind wir wieder

290
00:14:15,930 --> 00:14:18,623
‫bei unseren vier Ergebnissen, die wir zuvor hatten.

291
00:14:19,900 --> 00:14:22,610
‫Wir können auch die Dauer aktivieren, und tatsächlich

292
00:14:22,610 --> 00:14:24,743
‫haben wir jetzt zwei Ergebnisse.

293
00:14:26,110 --> 00:14:27,180
‫Erinnere dich daran?

294
00:14:27,180 --> 00:14:28,643
‫Und wenn wir diese

295
00:14:29,960 --> 00:14:32,380
‫ausschalten, nun, dann wird es natürlich genauso funktionieren.

296
00:14:32,380 --> 00:14:34,330
‫Lassen Sie uns diese leere Zeile hier einfach löschen.

297
00:14:36,740 --> 00:14:40,340
‫Und so hat es mit unserem ursprünglichen Abfragestring

298
00:14:40,340 --> 00:14:42,693
‫offensichtlich auch noch funktioniert.

299
00:14:44,220 --> 00:14:47,630
‫Wir haben unsere Filterfunktion so vorbereitet,

300
00:14:47,630 --> 00:14:51,410
‫dass sie Seiten-, Sortier- und Begrenzungsfelder ignoriert.

301
00:14:51,410 --> 00:14:53,450
‫Aber es gibt tatsächlich noch

302
00:14:53,450 --> 00:14:56,210
‫etwas, was wir in unserem Code tun müssen,

303
00:14:56,210 --> 00:14:59,753
‫um diese Funktionen grundsätzlich in zukünftigen Videos implementieren zu können.

304
00:15:01,360 --> 00:15:03,250
‫Kehren wir hier zu unserem Code zurück.

305
00:15:03,250 --> 00:15:04,570
‫Lassen Sie uns nun

306
00:15:04,570 --> 00:15:07,093
‫ein wenig darüber lernen, wie Abfragen in Mongoose tatsächlich funktionieren.

307
00:15:08,220 --> 00:15:09,910
‫Ich glaube, ich habe das

308
00:15:09,910 --> 00:15:13,400
‫schon einmal erwähnt, aber es ist sehr wichtig, noch einmal darüber zu sprechen.

309
00:15:13,400 --> 00:15:16,943
‫Diese find-Methode hier wird eine Abfrage zurückgeben.

310
00:15:18,060 --> 00:15:20,430
‫All dies hier wird eine Abfrage zurückgeben.

311
00:15:20,430 --> 00:15:22,410
‫Und das ist der Grund, warum

312
00:15:22,410 --> 00:15:24,840
‫wir dann andere Methoden wie diese verketten können.

313
00:15:24,840 --> 00:15:28,630
‫Wie zum Beispiel wo, gleich und all diese anderen Methoden, über die

314
00:15:28,630 --> 00:15:30,770
‫ich zuvor mit Ihnen gesprochen habe.

315
00:15:30,770 --> 00:15:33,770
‫Lassen Sie mich Ihnen das in der Dokumentation tatsächlich noch einmal zeigen.

316
00:15:37,670 --> 00:15:40,170
‫Hier haben wir das Abfrageobjekt,

317
00:15:40,170 --> 00:15:42,710
‫und wenn wir die Methode find

318
00:15:42,710 --> 00:15:46,590
‫verwenden, gibt sie ein Objekt zurück, das eine Abfrage ist.

319
00:15:46,590 --> 00:15:48,310
‫Im Query Dot Prototyp

320
00:15:48,310 --> 00:15:50,180
‫haben wir dann alle diese Methoden.

321
00:15:50,180 --> 00:15:52,820
‫Zum Beispiel hier unten haben wir wo, was ich

322
00:15:52,820 --> 00:15:54,040
‫gerade erwähnt habe.

323
00:15:54,040 --> 00:15:55,790
‫Wir haben Sortierung,

324
00:15:55,790 --> 00:15:58,120
‫die später zum Sortieren verwendet wird.

325
00:15:58,120 --> 00:16:00,870
‫Wir haben, mal sehen, wir haben

326
00:16:00,870 --> 00:16:03,740
‫weniger oder weniger als gleich, wir haben mehr.

327
00:16:03,740 --> 00:16:05,260
‫Wir haben...

328
00:16:05,260 --> 00:16:06,700
‫Was haben wir noch verwendet?

329
00:16:06,700 --> 00:16:08,070
‫Wir haben Gleiches verwendet.

330
00:16:08,070 --> 00:16:11,310
‫All dies ist Teil des Abfragepunkt-Prototyps.

331
00:16:11,310 --> 00:16:13,920
‫Was wiederum auf Objekte verweist,

332
00:16:13,920 --> 00:16:16,783
‫die wir mit der Abfrageklasse erstellen.

333
00:16:19,613 --> 00:16:21,410
‫Dies ist wiederum der Grund,

334
00:16:21,410 --> 00:16:24,070
‫warum wir diese Art der Verkettung durchführen können.

335
00:16:24,070 --> 00:16:26,290
‫Jetzt kommt der wichtige Teil.

336
00:16:26,290 --> 00:16:28,350
‫Sobald wir das

337
00:16:28,350 --> 00:16:30,970
‫Ergebnis der Abfrage tatsächlich abwarten, also

338
00:16:30,970 --> 00:16:33,950
‫zum Beispiel wait here oder here verwenden.

339
00:16:33,950 --> 00:16:35,890
‫Sobald wir dieses Wait verwenden,

340
00:16:35,890 --> 00:16:37,910
‫wird die Abfrage ausgeführt und

341
00:16:37,910 --> 00:16:39,610
‫mit den Dokumenten

342
00:16:39,610 --> 00:16:42,144
‫zurückgegeben, die tatsächlich unserer Abfrage entsprechen.

343
00:16:42,144 --> 00:16:44,960
‫Wenn wir es so machen, wie wir es hier

344
00:16:44,960 --> 00:16:46,730
‫haben, gibt es jetzt die Möglichkeit,

345
00:16:46,730 --> 00:16:49,110
‫später Sortierung oder Paginierung oder all diese

346
00:16:49,110 --> 00:16:50,793
‫anderen Funktionen zu implementieren.

347
00:16:51,880 --> 00:16:53,870
‫Stattdessen müssen wir diesen

348
00:16:53,870 --> 00:16:57,220
‫Teil hier in einer Abfrage speichern, dann am

349
00:16:57,220 --> 00:17:00,200
‫Ende, sobald wir alle Methoden auf die erforderliche

350
00:17:00,200 --> 00:17:02,440
‫Abfrage ändern, erst dann am

351
00:17:02,440 --> 00:17:04,863
‫Ende können wir darauf warten Anfrage.

352
00:17:06,080 --> 00:17:08,600
‫Zum Beispiel verwenden wir die Sortiermethode.

353
00:17:08,600 --> 00:17:10,200
‫Wir werden die Methode "predict"

354
00:17:10,200 --> 00:17:12,440
‫verwenden, wir werden die Methode "limit" verwenden, und

355
00:17:12,440 --> 00:17:14,500
‫wir werden wirklich eine Reihe von Methoden

356
00:17:14,500 --> 00:17:16,620
‫verwenden und sie mit dieser Abfrage verketten.

357
00:17:16,620 --> 00:17:18,110
‫Das wäre

358
00:17:18,110 --> 00:17:20,910
‫wiederum unmöglich, wenn wir hier gleich das

359
00:17:20,910 --> 00:17:23,073
‫Ergebnis dieser ersten Abfrage abwarten.

360
00:17:24,590 --> 00:17:26,470
‫Ich hoffe, das war sinnvoll.

361
00:17:26,470 --> 00:17:28,660
‫Wir werden unsere

362
00:17:28,660 --> 00:17:30,140
‫Touren

363
00:17:31,090 --> 00:17:33,473
‫hier unten machen.

364
00:17:35,540 --> 00:17:37,623
‫Und dieser wartet auf die Abfrage.

365
00:17:41,310 --> 00:17:43,830
‫Die Abfrage ist einfach die

366
00:17:43,830 --> 00:17:45,533
‫Abfrage ohne Wartezeit.

367
00:17:47,460 --> 00:17:49,360
‫Nur um es mit diesem Teil hier in

368
00:17:49,360 --> 00:17:50,363
‫Einklang zu bringen,

369
00:17:52,060 --> 00:17:53,163
‫machen wir es so.

370
00:17:55,603 --> 00:17:57,123
‫Nehmen wir an,

371
00:17:58,540 --> 00:18:00,437
‫wir erstellen zuerst die

372
00:18:00,437 --> 00:18:03,363
‫Abfrage und führen dann die Abfrage aus.

373
00:18:07,290 --> 00:18:08,313
‫Das ist nicht richtig.

374
00:18:11,490 --> 00:18:13,040
‫Da wir hier Kommentare

375
00:18:13,040 --> 00:18:14,330
‫erstellen, sagen

376
00:18:15,300 --> 00:18:16,790
‫wir auch "Antwort senden".

377
00:18:16,790 --> 00:18:20,023
‫Nur um unseren Code ein bisschen einfacher zu scannen.

378
00:18:20,870 --> 00:18:22,380
‫Ich hoffe, das

379
00:18:22,380 --> 00:18:24,820
‫hat alles Sinn gemacht, es ist ein

380
00:18:24,820 --> 00:18:26,780
‫recht langes Video geworden, aber

381
00:18:26,780 --> 00:18:29,356
‫es war wichtig, diesen Teil hier abzuschließen, indem

382
00:18:29,356 --> 00:18:31,830
‫ich euch diese Logik hier erkläre, damit wir

383
00:18:31,830 --> 00:18:34,080
‫in den nächsten Videos die Umsetzung dann

384
00:18:34,080 --> 00:18:36,110
‫auch umsetzen können Rest der Funktionen.

385
00:18:36,110 --> 00:18:37,940
‫Denn ohne es

386
00:18:37,940 --> 00:18:39,983
‫würde es nicht funktionieren.

