﻿1
00:00:01,100 --> 00:00:04,883
‫-: In diesem Video implementieren wir die Dokumentaktualisierung.

2
00:00:06,250 --> 00:00:09,810
‫Beginnen wir also hier in unserem Update-Tour-Handler damit, eine

3
00:00:09,810 --> 00:00:11,803
‫asynchrone Funktion daraus zu machen.

4
00:00:14,650 --> 00:00:18,250
‫Dann, oder versuchen Sie es mit catch block, und das

5
00:00:18,250 --> 00:00:22,130
‫mache ich jetzt sehr schnell, weil wir uns jetzt schon daran

6
00:00:22,130 --> 00:00:22,963
‫gewöhnt haben.

7
00:00:24,330 --> 00:00:25,180
‫Rechts?

8
00:00:25,180 --> 00:00:28,210
‫Das geht also in den try-Block und

9
00:00:28,210 --> 00:00:32,440
‫dann hole ich diesen hier einfach aus dem catch-Block dieser

10
00:00:33,450 --> 00:00:34,693
‫anderen Funktion.

11
00:00:36,130 --> 00:00:37,653
‫Also gut.

12
00:00:39,230 --> 00:00:40,660
‫Auf geht's.

13
00:00:40,660 --> 00:00:42,430
‫Und jetzt müssen wir

14
00:00:42,430 --> 00:00:44,620
‫hier am Anfang dieses Versuchsblocks

15
00:00:44,620 --> 00:00:47,140
‫im Grunde genommen das Dokument abfragen, das

16
00:00:47,140 --> 00:00:50,580
‫wir aktualisieren möchten, und es dann aktualisieren, in Ordnung?

17
00:00:50,580 --> 00:00:51,730
‫Und das können

18
00:00:51,730 --> 00:00:54,250
‫wir mit Mungo tatsächlich in einem Befehl tun.

19
00:00:54,250 --> 00:00:57,160
‫Und denken Sie noch einmal daran, dass wir die Tour

20
00:00:57,160 --> 00:00:59,370
‫basierend auf einer ID aktualisieren werden, okay?

21
00:00:59,370 --> 00:01:03,320
‫Es ist also eine ähnliche Situation wie hier, wo

22
00:01:03,320 --> 00:01:05,590
‫wir nach ID finden.

23
00:01:05,590 --> 00:01:08,130
‫Und jetzt können wir tatsächlich etwas sehr

24
00:01:08,130 --> 00:01:11,380
‫Ähnliches tun, nämlich anhand von IDs und Updates finden.

25
00:01:11,380 --> 00:01:13,713
‫Also wieder alles in einer Abfrage.

26
00:01:14,600 --> 00:01:16,790
‫Also, lass uns eine Tour machen.

27
00:01:20,400 --> 00:01:22,963
‫findByID und aktualisieren.

28
00:01:24,150 --> 00:01:27,520
‫Okay, was müssen wir hier reingeben?

29
00:01:27,520 --> 00:01:31,290
‫Nun, natürlich die ID, damit wir zuerst das Dokument finden,

30
00:01:31,290 --> 00:01:33,313
‫das aktualisiert werden soll.

31
00:01:34,620 --> 00:01:39,030
‫Das ist also, genau wie zuvor, req. Parameter. ID und

32
00:01:39,030 --> 00:01:42,690
‫dann die Daten, die wir eigentlich ändern wollen.

33
00:01:42,690 --> 00:01:44,750
‫Und diese Daten werden im Hauptteil sein,

34
00:01:44,750 --> 00:01:46,763
‫genau wie in der Post-Anfrage.

35
00:01:48,430 --> 00:01:51,330
‫Also erf. Körper, okay?

36
00:01:51,330 --> 00:01:53,470
‫Und dann, eigentlich als drittes Argument,

37
00:01:53,470 --> 00:01:57,050
‫können wir auch einige Optionen einpatchen, und das werden wir tun.

38
00:01:57,050 --> 00:02:00,600
‫Und die erste Option, die ich angeben möchte, ist new

39
00:02:01,540 --> 00:02:03,690
‫und setze sie auf true.

40
00:02:03,690 --> 00:02:06,760
‫Denn auf diese Weise wird das

41
00:02:06,760 --> 00:02:08,870
‫neue aktualisierte Dokument zurückgegeben.

42
00:02:08,870 --> 00:02:11,810
‫Und da wir dieses aktualisierte Dokument an

43
00:02:11,810 --> 00:02:14,410
‫den Client zurücksenden möchten, möchten wir

44
00:02:14,410 --> 00:02:18,380
‫immer, dass diese Methode dieses neue Dokument tatsächlich zurückgibt, okay?

45
00:02:18,380 --> 00:02:22,160
‫Auf diese Weise ist es dann tatsächlich sinnvoll,

46
00:02:22,160 --> 00:02:27,160
‫diese Abfrage abzuwarten und dann in einer neuen Variablen zu speichern.

47
00:02:28,710 --> 00:02:30,720
‫Also dann einfach hier

48
00:02:30,720 --> 00:02:34,743
‫Tour nennen und dann wieder das Ergebnis dieser Abfrage abwarten.

49
00:02:35,640 --> 00:02:38,200
‫Alle diese Methoden, die wir bisher auf

50
00:02:38,200 --> 00:02:41,923
‫der Tour verwendet haben, also nach ID suchen und aktualisieren,

51
00:02:43,220 --> 00:02:47,300
‫oder, na ja, nicht wirklich erstellen, sondern nach ID suchen oder

52
00:02:47,300 --> 00:02:51,350
‫suchen, all dies gibt Abfragen zurück, also sind sie Abfragen Methoden

53
00:02:51,350 --> 00:02:53,320
‫und lassen Sie mich

54
00:02:53,320 --> 00:02:55,700
‫Ihnen das in der Mungo-Dokumentation tatsächlich zeigen.

55
00:02:55,700 --> 00:02:58,510
‫Bis zu diesem Zeitpunkt haben wir uns die

56
00:02:58,510 --> 00:03:00,300
‫Dokumentation also noch nicht angesehen.

57
00:03:00,300 --> 00:03:01,850
‫Also, lass uns das schnell tun.

58
00:03:01,850 --> 00:03:05,080
‫In dem Modell, das in unserem Fall Tour ist,

59
00:03:05,080 --> 00:03:07,610
‫haben wir also alle diese Abfragemethoden, richtig?

60
00:03:07,610 --> 00:03:11,920
‫Sie sehen also "Suchen", "Einen finden", "Suchen nach ID", was nur

61
00:03:11,920 --> 00:03:14,530
‫eine Abkürzung für "Einen finden" ist.

62
00:03:14,530 --> 00:03:17,460
‫Dann sehen Sie nach ID suchen und aktualisieren,

63
00:03:17,460 --> 00:03:19,320
‫dies ist diejenige, die

64
00:03:19,320 --> 00:03:22,018
‫wir derzeit verwenden, und die tatsächlich nur eine

65
00:03:22,018 --> 00:03:26,440
‫Abkürzung für die Suche nach einer ID ist und die wir nach einer

66
00:03:26,440 --> 00:03:30,380
‫ID abfragen, so ähnlich wie wir hatte in der letzten Vorlesung, okay?

67
00:03:30,380 --> 00:03:33,630
‫Und tatsächlich können wir auf eine davon klicken, also

68
00:03:33,630 --> 00:03:36,340
‫lass uns diejenige tun, die wir

69
00:03:36,340 --> 00:03:39,931
‫gerade verwenden, und das führt uns dann wirklich zur API-Dokumentation,

70
00:03:39,931 --> 00:03:43,560
‫die uns zeigt, wie man eine bestimmte Methode wirklich verwendet.

71
00:03:43,560 --> 00:03:46,650
‫Sie sehen also, dass wir die

72
00:03:46,650 --> 00:03:50,550
‫ID, also den Wert, von der abzufragenden ID, das

73
00:03:50,550 --> 00:03:55,320
‫Objekt mit den zu aktualisierenden Daten und ein Optionsobjekt übergeben haben.

74
00:03:55,320 --> 00:03:57,410
‫Und hier unten können wir tatsächlich

75
00:03:57,410 --> 00:03:59,770
‫die Optionen sehen, die wir einstellen können,

76
00:03:59,770 --> 00:04:03,360
‫also denken Sie daran, wir setzen einfach new auf true, und

77
00:04:03,360 --> 00:04:06,570
‫wie hier gesagt, wird dann das geänderte Dokument und

78
00:04:06,570 --> 00:04:08,480
‫nicht das Original zurückgegeben.

79
00:04:08,480 --> 00:04:11,500
‫Nun, eine andere, die wir eigentlich auf

80
00:04:11,500 --> 00:04:15,690
‫"true" setzen möchten, ist die Ausführung von Validatoren, damit jedes Mal,

81
00:04:15,690 --> 00:04:19,160
‫wenn wir ein bestimmtes Dokument aktualisieren, die Validatoren, die

82
00:04:19,160 --> 00:04:22,334
‫wir im Schema angegeben haben, erneut ausgeführt werden, okay?

83
00:04:22,334 --> 00:04:26,050
‫Und wir werden später in diesem Abschnitt viel über

84
00:04:26,050 --> 00:04:27,600
‫Validatoren und Validierung sprechen,

85
00:04:27,600 --> 00:04:31,770
‫aber ich werde es hier belassen, damit wir es im Grunde

86
00:04:31,770 --> 00:04:32,743
‫nicht vergessen.

87
00:04:34,340 --> 00:04:35,530
‫Okay?

88
00:04:35,530 --> 00:04:38,810
‫Sparen Sie jetzt, und eigentlich möchte ich hierher zurückkehren, nur

89
00:04:38,810 --> 00:04:40,880
‫um Ihnen zu zeigen, wie

90
00:04:40,880 --> 00:04:43,210
‫viele Methoden wir tatsächlich bei Mungos haben.

91
00:04:43,210 --> 00:04:46,250
‫Im Modell haben wir also alle diese Methoden hier, die Sie

92
00:04:46,250 --> 00:04:47,753
‫in dieser Liste sehen.

93
00:04:48,620 --> 00:04:51,300
‫So haben wir zum Beispiel vorher create verwendet, wir

94
00:04:51,300 --> 00:04:52,833
‫haben auch find verwendet.

95
00:04:53,850 --> 00:04:54,683
‫Okay?

96
00:04:54,683 --> 00:04:57,090
‫Und die, die Sie hier oben sehen, sind

97
00:04:57,090 --> 00:04:59,350
‫direkt am Modell verfügbar, und das ist

98
00:04:59,350 --> 00:05:01,363
‫in unserem Fall die Tour.

99
00:05:02,300 --> 00:05:04,320
‫Nun, hier unten sehen Sie zum

100
00:05:04,320 --> 00:05:08,520
‫Beispiel auch Modell. Prototyp. sicher zum Beispiel.

101
00:05:08,520 --> 00:05:10,770
‫Und diesen haben wir eigentlich

102
00:05:10,770 --> 00:05:14,290
‫auch schon genutzt, als wir anfingen, mit Mungo zu arbeiten.

103
00:05:14,290 --> 00:05:16,650
‫Ich bin mir also nicht sicher, ob Sie damit

104
00:05:16,650 --> 00:05:20,070
‫vertraut sind, aber im Java-Skriptmodell. Prototyp bedeutet immer

105
00:05:20,070 --> 00:05:23,560
‫ein Objekt, das aus einer Klasse oder in diesem Fall

106
00:05:23,560 --> 00:05:25,330
‫aus einem Modell erstellt wurde.

107
00:05:25,330 --> 00:05:29,010
‫Die Methode save bezieht sich hier also auf eine Save-Methode, die

108
00:05:29,010 --> 00:05:32,530
‫für ein Dokument und nicht für eine Tour aufgerufen wird.

109
00:05:32,530 --> 00:05:35,370
‫Und denken Sie daran, dass wir genau das getan haben.

110
00:05:35,370 --> 00:05:37,670
‫Und ich glaube, ich habe es immer noch als Kommentar hier.

111
00:05:40,430 --> 00:05:41,550
‫Ja, genau hier.

112
00:05:41,550 --> 00:05:45,717
‫Wir hatten also eine Tour, diese neue Tourvariable hier,

113
00:05:45,717 --> 00:05:48,600
‫die aus dem Tourmodell erstellt wurde,

114
00:05:48,600 --> 00:05:53,220
‫und diese neue Tour hier bekam Zugriff auf die Methode

115
00:05:53,220 --> 00:05:57,320
‫save, da diese Teil des Prototypobjekts dieser Klasse ist.

116
00:05:57,320 --> 00:06:00,280
‫In Ordnung, ich möchte Sie jetzt nicht mit den

117
00:06:00,280 --> 00:06:02,760
‫Grundlagen von Java Script langweilen, aber

118
00:06:02,760 --> 00:06:05,620
‫es ist wichtig, um die Dokumentation zu verstehen, okay?

119
00:06:05,620 --> 00:06:09,320
‫Denn irgendwann müssen Sie Dokumentation verwenden, denn

120
00:06:09,320 --> 00:06:11,520
‫Mungo ist Yute.

121
00:06:11,520 --> 00:06:13,700
‫Und ich werde Ihnen während des

122
00:06:13,700 --> 00:06:16,520
‫ganzen Kurses viele wichtige Dinge beibringen, aber manchmal brauchen

123
00:06:16,520 --> 00:06:19,240
‫Sie immer noch etwas, was ich Ihnen in diesem

124
00:06:19,240 --> 00:06:20,740
‫Kurs nicht gezeigt habe.

125
00:06:20,740 --> 00:06:23,060
‫Daher ist es wichtig, dass

126
00:06:23,060 --> 00:06:25,900
‫Sie die Dokumentation auch wirklich verstehen, okay?

127
00:06:25,900 --> 00:06:29,360
‫Und so wieder, wenn Sie ein Modell sehen. Prototyp hier, Sie

128
00:06:29,360 --> 00:06:31,810
‫wissen, dass die Speichermethode hier

129
00:06:31,810 --> 00:06:34,800
‫für alle Instanzen verfügbar sein wird, die

130
00:06:34,800 --> 00:06:37,330
‫durch ein Modell erstellt wurden, okay?

131
00:06:37,330 --> 00:06:39,160
‫Also nicht das Modell selbst.

132
00:06:39,160 --> 00:06:42,000
‫Also zum Beispiel, wenn Sie Tour versucht haben. außer Sie

133
00:06:42,000 --> 00:06:43,660
‫könnten es nicht verwenden.

134
00:06:43,660 --> 00:06:46,960
‫Es würde Ihnen einen Fehler geben, aber wenn Sie stattdessen versuchen,

135
00:06:46,960 --> 00:06:49,700
‫ein Dokument zu speichern, das durch die Tour

136
00:06:49,700 --> 00:06:52,120
‫erstellt wurde, würde es natürlich funktionieren, okay?

137
00:06:52,120 --> 00:06:53,840
‫Ich hoffe das ergibt Sinn.

138
00:06:53,840 --> 00:06:56,670
‫Und wie auch immer, Sie sehen, dass

139
00:06:56,670 --> 00:07:00,310
‫wir noch viele andere Dinge haben, also müssen wir abfragen,

140
00:07:00,310 --> 00:07:04,030
‫worüber wir bereits gesprochen haben, weil zum Beispiel nach ID suchen

141
00:07:04,030 --> 00:07:08,320
‫und aktualisieren oder finden oder nach ID suchen, all das wird Abfrageobjekte zurückgeben.

142
00:07:08,320 --> 00:07:10,860
‫Wenn wir später Dinge

143
00:07:10,860 --> 00:07:15,150
‫wie Sortieren oder Filtern implementieren, verwenden wir dieses Abfrageobjekt.

144
00:07:15,150 --> 00:07:15,983
‫Okay?

145
00:07:15,983 --> 00:07:19,751
‫Also, lass uns zurückgehen, wir sind hier irgendwie vom Weg abgekommen, indem

146
00:07:19,751 --> 00:07:22,210
‫wir uns die Dokumentation angesehen haben, aber ich

147
00:07:22,210 --> 00:07:24,230
‫denke, es ist wirklich wichtig,

148
00:07:24,230 --> 00:07:26,370
‫sich die Dokumentation anzusehen, denn ein

149
00:07:26,370 --> 00:07:29,670
‫Kurs wie dieser kann Sie nur so weit führen, und

150
00:07:29,670 --> 00:07:32,570
‫ich Ich hoffe, du weißt das jetzt schon, okay?

151
00:07:32,570 --> 00:07:35,810
‫Es ist sehr wichtig, dass Sie auch selbst Informationen finden

152
00:07:35,810 --> 00:07:38,450
‫können, und wie das geht, möchte ich Ihnen

153
00:07:38,450 --> 00:07:40,560
‫auch in diesem Kurs zeigen.

154
00:07:40,560 --> 00:07:43,460
‫Wie auch immer, lassen Sie uns diese neu

155
00:07:43,460 --> 00:07:46,820
‫aktualisierte Tour jetzt tatsächlich auch an den Client zurücksenden,

156
00:07:46,820 --> 00:07:49,690
‫was wir im Moment nicht tun,

157
00:07:49,690 --> 00:07:52,810
‫weil wir einfach diese aktualisierte Tour hier-String haben.

158
00:07:52,810 --> 00:07:56,470
‫Also lass uns das loswerden und einfach auf Tour schicken.

159
00:07:56,470 --> 00:08:00,140
‫Und denken Sie daran, dass dies tatsächlich dies ist.

160
00:08:00,140 --> 00:08:03,940
‫Die Tour-Eigenschaft wird also auf das Tour-Objekt gesetzt, aber dank

161
00:08:03,940 --> 00:08:07,360
‫ES6 müssen wir dies nicht mehr tun, wenn

162
00:08:07,360 --> 00:08:11,160
‫der Eigenschaftsname den gleichen Namen wie der Wert hat.

163
00:08:11,160 --> 00:08:13,310
‫Okay, also lass uns das loswerden.

164
00:08:13,310 --> 00:08:15,413
‫Dadurch sieht unser Code etwas besser aus.

165
00:08:17,350 --> 00:08:19,373
‫Okay, und jetzt testen wir es.

166
00:08:20,980 --> 00:08:25,980
‫Zurück zum Postboten, hier haben wir die aktualisierte Tourroute.

167
00:08:26,079 --> 00:08:27,960
‫Also, lassen Sie uns dies

168
00:08:27,960 --> 00:08:30,983
‫mit derselben ID tun, die wir zuvor verwendet haben.

169
00:08:34,310 --> 00:08:35,550
‫Also dieser.

170
00:08:35,550 --> 00:08:38,827
‫Dann kommen wir zum Körper hier und lasst uns ändern--

171
00:08:39,761 --> 00:08:42,250
‫Nun, was werden wir hier ändern?

172
00:08:42,250 --> 00:08:46,493
‫Nun, ändern wir den Preis auf 500.

173
00:08:48,040 --> 00:08:51,383
‫Also, Preis 500, senden Sie es, und

174
00:08:52,630 --> 00:08:55,700
‫tatsächlich erhalten wir das neu aktualisierte Objekt

175
00:08:55,700 --> 00:08:58,250
‫mit dem Preis, der bereits

176
00:08:58,250 --> 00:09:00,730
‫auf 500 festgelegt ist.

177
00:09:00,730 --> 00:09:03,410
‫Und wenn wir jetzt alle Touren bekommen, dann sollte

178
00:09:03,410 --> 00:09:05,150
‫sich das natürlich hier widerspiegeln.

179
00:09:05,150 --> 00:09:06,480
‫Und hier ist es.

180
00:09:06,480 --> 00:09:09,223
‫Aber nehmen wir jetzt an, dass wir es auf einen String setzen.

181
00:09:13,930 --> 00:09:15,920
‫Schauen wir uns dann an, was passiert.

182
00:09:15,920 --> 00:09:17,930
‫Nun, dann bekommen wir tatsächlich einen Fehler.

183
00:09:17,930 --> 00:09:21,090
‫Und das liegt daran, dass wir die Validatoren erneut ausgeführt haben.

184
00:09:21,090 --> 00:09:23,497
‫Denken Sie daran, dass wir-- Wo

185
00:09:24,900 --> 00:09:25,760
‫ist das?

186
00:09:27,720 --> 00:09:28,553
‫Ach ja, hier.

187
00:09:28,553 --> 00:09:32,070
‫Hier legen wir also fest, dass die Validatoren erneut ausgeführt werden sollen.

188
00:09:32,070 --> 00:09:36,130
‫Und so ist der Preis im Moment keine Zahl

189
00:09:36,130 --> 00:09:38,050
‫mehr wie erwartet, oder?

190
00:09:38,050 --> 00:09:41,580
‫In einem Schema sagen wir also, dass der Preis

191
00:09:41,580 --> 00:09:44,580
‫eine Zahl sein sollte, aber natürlich kann

192
00:09:44,580 --> 00:09:49,290
‫Java-Skript oder Mungo diese Zeichenfolge hier im Grunde nicht in eine Zahl umwandeln.

193
00:09:49,290 --> 00:09:50,820
‫Aber das erwarten wir.

194
00:09:50,820 --> 00:09:53,350
‫Hier heißt es also, dass Art eine Zahl sein sollte.

195
00:09:53,350 --> 00:09:55,580
‫Daher gibt es uns einen

196
00:09:55,580 --> 00:09:58,540
‫Fehler, einfach weil wir die Validatoren erneut ausführen.

197
00:09:58,540 --> 00:10:01,530
‫Also setzen wir es zurück auf 500 und dann geht

198
00:10:01,530 --> 00:10:02,730
‫es natürlich wieder.

199
00:10:02,730 --> 00:10:05,430
‫Nun gut, denkt daran, dass wir

200
00:10:05,430 --> 00:10:07,750
‫hier tatsächlich eine Patch-Anfrage stellen.

201
00:10:07,750 --> 00:10:11,000
‫Wenn wir nun eine Put-Anfrage machen würden, denken Sie

202
00:10:11,000 --> 00:10:13,670
‫daran, dass Sie erwarten würden, dass das ursprüngliche

203
00:10:13,670 --> 00:10:15,190
‫Objekt vollständig durch

204
00:10:15,190 --> 00:10:18,150
‫das neue, das gesendet wird, ersetzt wird, okay?

205
00:10:18,150 --> 00:10:20,280
‫In diesem Fall würde es also

206
00:10:20,280 --> 00:10:22,272
‫nicht mehr so funktionieren, wie

207
00:10:22,272 --> 00:10:25,420
‫wir es hier implementiert haben, weil dieses hier einfach

208
00:10:25,420 --> 00:10:29,360
‫wirklich die Felder aktualisiert hat, die hier im Text anders sind, okay?

209
00:10:29,360 --> 00:10:32,150
‫Aber wie auch immer, ich denke, dass die

210
00:10:32,150 --> 00:10:34,400
‫Patch-Methode tatsächlich viel nützlicher ist,

211
00:10:34,400 --> 00:10:38,490
‫und daher wird dies die einzige sein, die hier implementiert wird.

212
00:10:38,490 --> 00:10:42,300
‫Cool, also haben wir drei unserer vier korrekten Operationen

213
00:10:42,300 --> 00:10:44,910
‫implementiert, nur noch eine übrig, die

214
00:10:44,910 --> 00:10:46,463
‫gelöscht wird.

