1
00:00:03,950 --> 00:00:09,405
Der zweite Teil dieser Übung befasst sich mit

2
00:00:09,405 --> 00:00:15,340
den verschiedenen Get-Put-Post- und Löschvorgängen für Unterdokumente innerhalb des Dokuments.

3
00:00:15,340 --> 00:00:19,380
Wie wir im Beispiel für Gerichte gesehen

4
00:00:19,380 --> 00:00:26,680
haben, haben wir gesehen, dass die Kommentare

5
00:00:26,680 --> 00:00:31,680
in der Schale selbst als Unterdokument enthalten sind, so wie wir sowohl das Kommentarschema als auch das Schema-Schema definiert haben

6
00:00:31,680 --> 00:00:35,150
und dann das Gerichtenmodell definieren, indem wir das Kommentarschema

7
00:00:35,150 --> 00:00:38,880
in das Schüsselschema als Array von Kommentare.

8
00:00:38,880 --> 00:00:43,580
Und wir haben in der vorherigen Übung gesehen, wie die Kommentare in

9
00:00:43,580 --> 00:00:50,990
einem Array in Form eines Dokumentarfelds in jedem Gericht Dokument eingeschlossen sind.

10
00:00:50,990 --> 00:00:55,525
Wie machen wir Änderungen an den Kommentaren selbst vor?

11
00:00:55,525 --> 00:00:59,590
Wie bekommen wir die Liste der Kommentare für ein Gericht?

12
00:00:59,590 --> 00:01:06,515
Wie ändern wir einen bestimmten Kommentar in der Schale und so weiter?

13
00:01:06,515 --> 00:01:10,820
Also, das ist, was wir sehen werden, wie

14
00:01:10,820 --> 00:01:16,130
sie mit den verschiedenen get put post und löschen Operationen auf

15
00:01:16,130 --> 00:01:22,385
dem Gericht Gerichte Schrägstrich Gericht ID Schrägstrich Kommentare und die Gerichte

16
00:01:22,385 --> 00:01:29,935
Schrägstrich Gericht ID Schrägstrich Kommentare Schrägstrich Kommentar ID REST API Endpunkte.

17
00:01:29,935 --> 00:01:32,885
Um mit dieser Übung zu beginnen,

18
00:01:32,885 --> 00:01:35,735
wieder, zurück zum Dish Router,

19
00:01:35,735 --> 00:01:44,170
haben sie bereits gesehen, wie wir mit dem Schrägstrich Endpunkt und dem Schrägstrich Dish ID Endpunkt umgehen.

20
00:01:44,170 --> 00:01:50,300
Nun, viel von dieser Arbeit, die wir hier tun, ist bereits nützlich für uns,

21
00:01:50,300 --> 00:01:53,855
also was ich tun werde, ist, diesen Code zu kopieren,

22
00:01:53,855 --> 00:02:01,070
und dann werden wir diesen Code entsprechend bearbeiten, um die Kommentare und die Kommentar-ID zu behandeln.

23
00:02:01,070 --> 00:02:04,250
Also werde ich diesen ganzen Code kopieren, den wir

24
00:02:04,250 --> 00:02:08,750
hier sowohl für den Schrägstrich als auch den Schrägstrich Golden Dish ID haben,

25
00:02:08,750 --> 00:02:14,300
und dann werden wir es direkt unten wieder einfügen.

26
00:02:14,300 --> 00:02:17,795
Und dann werden wir hineingehen und jeden von ihnen modifizieren.

27
00:02:17,795 --> 00:02:21,470
So haben wir gesehen, dass, wenn Sie wieder nach oben schauen,

28
00:02:21,470 --> 00:02:27,800
der erste ist der Umgang mit dem Schrägstrich, der auf den Schrägschüssel-Endpunkt montiert wird.

29
00:02:27,800 --> 00:02:30,905
Und der nächste ist die Handhabung der Schrägschüssel-ID.

30
00:02:30,905 --> 00:02:37,410
Also sollte der dritte Schrägstrich ID Schrägstrich Kommentare behandeln.

31
00:02:37,410 --> 00:02:39,060
Also hier unten,

32
00:02:39,060 --> 00:02:49,080
würde diese dritte Gericht Router Route Schrägstrich Gericht ID Schrägstrich Kommentare sein.

33
00:02:49,080 --> 00:02:51,300
Und dann

34
00:02:51,300 --> 00:02:56,610
wäre der letzte, natürlich, Schrägstrich Gericht ID Schrägstrich

35
00:02:56,610 --> 00:03:05,670
Kommentare und dann Schrägstrich Doppelkommentar ID.

36
00:03:05,670 --> 00:03:09,289
Also, jetzt, da wir diese Routen hier aktualisiert haben,

37
00:03:09,289 --> 00:03:12,380
ist der nächste Schritt, um

38
00:03:12,380 --> 00:03:16,310
den Code in der get put post und löschen Operationen hier zu beheben.

39
00:03:16,310 --> 00:03:22,025
So werden wir mit dem Schrägstrich Gericht ID Schrägstrich Kommentare Endpunkt beginnen.

40
00:03:22,025 --> 00:03:25,530
Also im Falle der Schrägstrich Gericht ID Schrägstrich Kommentare Endpunkt,

41
00:03:25,530 --> 00:03:31,425
so werden wir Gerichte finden, aber statt sagen Gerichte finden,

42
00:03:31,425 --> 00:03:38,100
werden wir Gerichte nach

43
00:03:38,100 --> 00:03:45,595
ID finden und so werden wir das spezifische Gericht finden, das wir suchen.

44
00:03:45,595 --> 00:03:53,335
Also hier werden wir für diese req params Gericht ID suchen,

45
00:03:53,335 --> 00:03:57,820
so werden wir zuerst nach dem Gericht suchen,

46
00:03:57,820 --> 00:04:02,900
und so wird dies ein bestimmtes Gericht zurückgeben.

47
00:04:02,900 --> 00:04:06,865
Also, wenn es dieses spezifische Gericht hier zurückgibt,

48
00:04:06,865 --> 00:04:13,475
dann, was sie hier innen überprüfen werden

49
00:04:13,475 --> 00:04:20,765
, ist, dass, wenn Gericht nicht gleich null ist.

50
00:04:20,765 --> 00:04:24,169
Es ist durchaus möglich, dass das Gericht nicht existiert.

51
00:04:24,169 --> 00:04:28,000
Wenn wir also nach einem bestimmten Gericht mit einer Teller ID suchen,

52
00:04:28,000 --> 00:04:29,495
gibt es dieses Gericht möglicherweise nicht,

53
00:04:29,495 --> 00:04:35,360
also müssen wir uns darum kümmern, diese spezielle Situation zu behandeln.

54
00:04:35,360 --> 00:04:39,590
Also lassen Sie uns diesen Teil hier behandeln,

55
00:04:39,590 --> 00:04:43,985
und wenn es nicht null ist, dann bedeutet das, dass das Gericht existiert.

56
00:04:43,985 --> 00:04:51,125
Also schneide ich das aus und füge es dann hinein.

57
00:04:51,125 --> 00:04:54,150
Und dann in diesem Fall,

58
00:04:54,150 --> 00:04:56,940
da das Gericht nicht null ist,

59
00:04:56,940 --> 00:05:02,300
so werden wir den Statuscode und den eingestellten Header zurückgeben und

60
00:05:02,300 --> 00:05:07,755
dann hier werden wir Teller Kommentare zurückgeben,

61
00:05:07,755 --> 00:05:13,685
weil wir gebeten werden, nur die Kommentare für dieses bestimmte Gericht zurückzugeben, also sagen wir:

62
00:05:13,685 --> 00:05:16,365
„Gerichte finden nach ID,

63
00:05:16,365 --> 00:05:20,390
dann req Parameter Gericht ID und dann Gericht.“

64
00:05:20,390 --> 00:05:25,540
Und so werden wir die Gerichte Kommentare hier zurückgeben.

65
00:05:25,540 --> 00:05:30,320
Andernfalls ist dies also der andere Teil.

66
00:05:30,320 --> 00:05:33,500
Was bedeutet, dass das Gericht nicht existiert.

67
00:05:33,500 --> 00:05:35,295
Also in diesem Fall

68
00:05:35,295 --> 00:05:43,095
würden wir hier einen Fehler konstruieren, indem wir neue Fehler sagen und dann sagen wir

69
00:05:43,095 --> 00:05:56,515
Gericht req params Gericht ID nicht gefunden.

70
00:05:56,515 --> 00:05:59,840
Also wurde dieses spezielle Gericht nicht gefunden,

71
00:05:59,840 --> 00:06:04,100
so dass wir offensichtlich nicht in der Lage sein, die Kommentare für das nicht vorhandene Gericht zurückzugeben.

72
00:06:04,100 --> 00:06:05,560
Also in diesem Fall,

73
00:06:05,560 --> 00:06:09,740
so werden wir ein neues Fehlerobjekt erstellen und dann werden wir

74
00:06:09,740 --> 00:06:15,090
den Status im Fehlerobjekt auf 404 setzen.

75
00:06:15,090 --> 00:06:17,855
Auch hier ist dies 404 nicht gefunden,

76
00:06:17,855 --> 00:06:23,420
und dann werden wir den nächsten Fehler zurückkehren.

77
00:06:23,420 --> 00:06:24,990
Nun, warum machen wir das?

78
00:06:24,990 --> 00:06:29,885
Denn wenn Sie dies als Fehler zurückgeben, wie Sie sich erinnern

79
00:06:29,885 --> 00:06:33,665
werden, wird dies von Ihrer Datei app.js behandelt,

80
00:06:33,665 --> 00:06:37,220
also

81
00:06:37,220 --> 00:06:40,700
haben wir in der Datei app.js unten hier den Fehlerbehandler.

82
00:06:40,700 --> 00:06:42,685
Also, wenn es hier

83
00:06:42,685 --> 00:06:46,560
reinkommt, wird dies den Rest oder Status auf den Fehlerpunktstatus setzen

84
00:06:46,560 --> 00:06:48,410
, den wir auf 404 gesetzt hatten,

85
00:06:48,410 --> 00:06:49,900
also wird das zurückgegeben,

86
00:06:49,900 --> 00:06:56,720
und dann wird es einfach diesen Fehler nehmen und dann diesen Fehler hier rendern.

87
00:06:56,720 --> 00:07:01,020
Das kümmert sich also um das Rendern der Fehler.

88
00:07:01,020 --> 00:07:07,080
Dies wird also die Fehlermeldung an unseren Client zurückgeben.

89
00:07:07,080 --> 00:07:09,490
Das ist, was wir hier aufrufen,

90
00:07:09,490 --> 00:07:11,090
also wenn das Gericht nicht existiert,

91
00:07:11,090 --> 00:07:15,475
werden wir nur diesen Fehler hier von der Get-Operation zurückgeben.

92
00:07:15,475 --> 00:07:19,475
Jetzt, für Post im Falle einer Post,

93
00:07:19,475 --> 00:07:24,920
erwarten wir, dass sie

94
00:07:24,920 --> 00:07:30,980
eine Schüssel ID zurückgegeben werden würde und dann werden wir nach dem Gericht suchen,

95
00:07:30,980 --> 00:07:35,840
und dann werden wir die Reihe von Kommentaren

96
00:07:35,840 --> 00:07:41,555
aus dem Körper nehmen und dann drücken Sie es in die Schüssel dort.

97
00:07:41,555 --> 00:07:46,375
Also werden wir Gerichte sagen, wieder, hier

98
00:07:46,375 --> 00:07:52,750
müssen wir die Suche nach ID machen, weil wir hier nach dem spezifischen Gericht suchen.

99
00:07:52,750 --> 00:07:59,485
Also für die Post, wir sagen Gericht finden nach ID dann Gericht,

100
00:07:59,485 --> 00:08:01,750
und so innen hier,

101
00:08:01,750 --> 00:08:04,060
wenn das Gericht existiert,

102
00:08:04,060 --> 00:08:06,555
dann werden wir das Gericht angemessen behandeln.

103
00:08:06,555 --> 00:08:10,360
Wenn nicht, müssen wir die Fehlermeldung senden.

104
00:08:10,360 --> 00:08:16,730
Also lassen Sie mich diesen Teil aus dem Get kopieren und dann

105
00:08:16,730 --> 00:08:20,710
werden wir das hier ersetzen.

106
00:08:22,130 --> 00:08:25,155
Also offensichtlich, wenn das Gericht nicht existiert,

107
00:08:25,155 --> 00:08:27,165
dann werden wir diesen Fehler hier zurückgeben,

108
00:08:27,165 --> 00:08:31,035
aber wenn das Gericht existiert, in diesem Fall

109
00:08:31,035 --> 00:08:35,930
werden wir den Statuscode 200 Satz Header zurückgeben.

110
00:08:35,930 --> 00:08:41,835
Aber bevor wir den Wert zurückgeben,

111
00:08:41,835 --> 00:08:50,400
was ich tun werde, ist, Gericht Kommentare zu sagen,

112
00:08:50,400 --> 00:08:55,020
also veröffentlichen wir eine neue Reihe von Kommentaren für das Gericht.

113
00:08:55,130 --> 00:09:02,790
Also sagen wir Gericht Kommentare Push req Körper.

114
00:09:02,790 --> 00:09:07,785
Weil der Nachrichtentext alle Kommentare enthält, die hier geschoben werden müssen,

115
00:09:07,785 --> 00:09:13,890
und dann werden wir sagen, „Dish save“.

116
00:09:13,890 --> 00:09:22,010
Und wenn das Speichern erfolgreich mit dem Gericht hier zurückkehrt,

117
00:09:22,010 --> 00:09:27,030
so werden wir das aktualisierte Gericht von hier senden.

118
00:09:32,350 --> 00:09:40,600
Also dieser Teil, in dem wir den Statuscode konstruieren,

119
00:09:40,600 --> 00:09:49,750
werden wir das hier im Inneren tun und dann werden wir die Rücksendung der

120
00:09:54,320 --> 00:10:00,875
Res.JSON und das Gericht, das wir hier erhalten haben.

121
00:10:00,875 --> 00:10:04,885
Also, was wir tun, ist, dass wir das Gericht hier retten.

122
00:10:04,885 --> 00:10:11,430
Wir schieben zuerst die Kommentare in die Schüssel dort,

123
00:10:11,430 --> 00:10:14,420
die neuen Kommentare in die Schüssel hier,

124
00:10:14,420 --> 00:10:19,210
und dann speichern wir das aktualisierte Gericht hier.

125
00:10:19,210 --> 00:10:20,825
Dann nach dem Speichern,

126
00:10:20,825 --> 00:10:29,070
werden wir das aktualisierte Gericht zurück an den Benutzer hier.

127
00:10:29,290 --> 00:10:32,125
Wenn es dann einen Fehler gibt,

128
00:10:32,125 --> 00:10:37,370
dann werden wir den Fehler genauso behandeln wie wir es hier getan haben.

129
00:10:38,570 --> 00:10:41,420
Wenn das Gericht nicht existiert,

130
00:10:41,420 --> 00:10:45,825
werden wir natürlich den Fehler zurückgeben, der besagt, dass das Gericht nicht existiert.

131
00:10:45,825 --> 00:10:47,475
Also, das ist für die Post.

132
00:10:47,475 --> 00:10:49,100
Die PUT-Operation

133
00:10:49,100 --> 00:10:51,680
wird natürlich nicht auf Geschirr unterstützt.

134
00:10:51,680 --> 00:10:53,140
Also, in diesem Fall

135
00:10:53,140 --> 00:10:56,210
versuchen wir, die PUT-Operation

136
00:10:56,210 --> 00:11:06,550
auf dem Geschirr durchzuführen, req.params.Dishid/Kommentare.

137
00:11:08,370 --> 00:11:10,980
Also, das ist nicht erlaubt.

138
00:11:10,980 --> 00:11:13,415
Also, das sagen wir für die PUT-Operation.

139
00:11:13,415 --> 00:11:15,545
Für den Löschvorgang,

140
00:11:15,545 --> 00:11:19,130
was wir tun werden, ist zuerst das Gericht zu finden.

141
00:11:19,130 --> 00:11:22,275
Also, wir sagen dish.findById.

142
00:11:22,275 --> 00:11:27,785
Also, löschen bedeutet, dass wir alle Kommentare aus dem Gericht entfernen,

143
00:11:27,785 --> 00:11:28,850
nicht das Gericht selbst,

144
00:11:28,850 --> 00:11:31,540
aber wir entfernen alle Kommentare aus dem Gericht.

145
00:11:31,540 --> 00:11:33,495
Also, in diesem Fall,

146
00:11:33,495 --> 00:11:41,695
was wir am Ende tun würden, ist wie folgt: Also, wenn das Gericht nicht null ist,

147
00:11:41,695 --> 00:11:47,345
erinnern Sie sich, dass wir es tun müssen, indem wir dann Gericht sagen.

148
00:11:47,345 --> 00:11:49,400
Wenn das Gericht nicht null ist,

149
00:11:49,400 --> 00:11:53,080
würden wir alle Kommentare aus dem Gericht entfernen.

150
00:11:53,080 --> 00:11:57,480
Also, ich werde diesen Code kopieren und ihn dann hier einfügen,

151
00:11:57,480 --> 00:12:00,880
und dann werden wir diesen Code bearbeiten und dann löschen.

152
00:12:00,880 --> 00:12:06,070
Wir werden sehen, ob das Gericht nicht null ist,

153
00:12:06,070 --> 00:12:10,085
dann werden sie das Gericht hier zurückgeben.

154
00:12:10,085 --> 00:12:12,495
Also, wenn Gericht nicht null ist,

155
00:12:12,495 --> 00:12:16,700
das wat, das wir behandeln würden, ist wie folgt.

156
00:12:16,700 --> 00:12:24,975
Also müssen wir hineingehen und jeden der Kommentare löschen.

157
00:12:24,975 --> 00:12:36,380
Also, wir sagen für (var i =

158
00:12:36,380 --> 00:12:49,940
(dish.comments.length -1) i>= 0; i—).

159
00:12:49,940 --> 00:12:55,860
Also, wir gehen buchstäblich hinein und entfernen jeden Kommentar.

160
00:12:55,860 --> 00:12:56,380
Also, wir sagen

161
00:12:56,380 --> 00:13:11,370
dish.comments.id (dish.comments [i]. _id).

162
00:13:11,370 --> 00:13:15,060
Wir sagen „Entfernen“.

163
00:13:15,060 --> 00:13:19,490
Also werden wir jedes der Gerichte entfernen,

164
00:13:19,490 --> 00:13:22,520
eins unter jedem der Kommentare nacheinander.

165
00:13:23,420 --> 00:13:26,910
Also, das ist, was wir mit den Kommentaren tun werden.

166
00:13:26,910 --> 00:13:30,600
Dann, sobald wir alle Kommentare für das Gericht entfernt

167
00:13:30,600 --> 00:13:34,800
haben, müssen wir das Gericht speichern und dann zurückschicken.

168
00:13:34,800 --> 00:13:38,345
Also, früher auch, wenn wir das Gericht modifizieren,

169
00:13:38,345 --> 00:13:39,760
ist das, was wir hier getan haben.

170
00:13:39,760 --> 00:13:43,250
Also, ich werde diesen Teil kopieren und dann

171
00:13:43,610 --> 00:13:46,415
hierher kommen, und dann

172
00:13:46,415 --> 00:13:52,060
sagen dish.save,

173
00:13:52,060 --> 00:13:57,085
dann werden wir das Gericht

174
00:13:57,085 --> 00:14:02,470
hier zurückgeben, um das aktualisierte Gericht anzuzeigen, das hier zurückgegeben wird.

175
00:14:02,470 --> 00:14:05,130
So werden wir die Kommentare löschen.

176
00:14:05,130 --> 00:14:07,225
Also, hier gehen wir hinein,

177
00:14:07,225 --> 00:14:10,800
jetzt gibt es keine einfache Möglichkeit, buchstäblich

178
00:14:10,800 --> 00:14:15,330
alle Kommentare aus dem Array herauszuziehen, wenn Sie ein Unterdokument haben.

179
00:14:15,330 --> 00:14:19,680
Sie müssen also jedes Unterdokument nacheinander löschen.

180
00:14:19,680 --> 00:14:22,720
Also, das ist, was ich in dieser for-Schleife hier mache.

181
00:14:22,720 --> 00:14:27,500
Also, ich sage für (var i = dish.comments.length).

182
00:14:27,500 --> 00:14:31,270
Also, ich schaue mir das Array der Kommentare an und beginne dann

183
00:14:31,270 --> 00:14:35,430
vom letzten Kommentar in diesem Array bis zum allerersten Kommentar,

184
00:14:35,430 --> 00:14:38,940
gehe ich hinein und lösche dann Kommentar durch Kommentar hier, indem ich

185
00:14:38,940 --> 00:14:42,905
den Entfernenvorgang für das Unterdokument verwende.

186
00:14:42,905 --> 00:14:47,320
Also, die Art und Weise, wie wir auf ein Unterdokument zugreifen, ist, indem wir

187
00:14:47,320 --> 00:14:53,720
Gericht sagen und dann Kommentare ist der Feldname und dann sage ich id hier.

188
00:14:53,720 --> 00:14:56,259
So greifen Sie auf ein Filialdokument zu,

189
00:14:56,259 --> 00:15:02,115
und hier geben Sie die ID der Filialdokumente an, auf die Sie zugreifen möchten.

190
00:15:02,115 --> 00:15:06,310
Also, diese ganze Sache gibt Ihnen Zugriff auf das Filialdokument,

191
00:15:06,310 --> 00:15:09,670
und dann rufen wir die remove-Methode für das Filialdokument auf,

192
00:15:09,670 --> 00:15:14,320
und so dass Filialdokument aus dem Array der Filialdokumente entfernt wird.

193
00:15:14,320 --> 00:15:17,980
Danach, nachdem wir alle Kommentare gelöscht haben,

194
00:15:17,980 --> 00:15:21,075
speichere ich die Änderungen und das war's.

195
00:15:21,075 --> 00:15:25,840
Also, alle meine Kommentare werden von dann Gericht gelöscht werden.

196
00:15:25,840 --> 00:15:33,335
Jetzt werden wir uns mit dem nächsten Endpunkt befassen, der dishidComments/:commentID ist.

197
00:15:33,335 --> 00:15:35,460
Also, in diesem Fall

198
00:15:35,460 --> 00:15:42,410
werden wir beginnen, indem wir zuerst das Gericht lokalisieren und dann, nachdem wir das Gericht gefunden

199
00:15:42,410 --> 00:15:47,460
haben, dann müssen wir sicherstellen, dass das Gericht existiert,

200
00:15:47,460 --> 00:15:49,310
und dann mit dem Gericht umgehen.

201
00:15:49,310 --> 00:15:52,320
Also, ich werde diesen Teil löschen,

202
00:15:52,320 --> 00:15:59,350
und dann werden wir sagen, lassen Sie uns diesen Teil von der git kopieren, die wir früher hatten,

203
00:16:09,140 --> 00:16:13,650
weil wir in der Lage sein müssen, mit der

204
00:16:13,650 --> 00:16:20,095
Situation umzugehen, in der entweder das Gericht nicht existiert oder das Gericht existiert, aber die Kommentare existieren nicht

205
00:16:20,095 --> 00:16:23,870
oder das Gericht selbst existiert nicht.

206
00:16:23,870 --> 00:16:28,280
Es gibt also drei Bedingungen, die ich testen muss.

207
00:16:28,280 --> 00:16:32,650
Also, wir werden sagen, wenn (Gericht! =

208
00:16:32,650 --> 00:16:51,180
null && dish.comments.id (req.params.commentID)! =

209
00:16:51,180 --> 00:17:00,545
null, was bedeutet, dass das Gericht selbst existiert und auch die Kommentare in der Schale existieren,

210
00:17:00,545 --> 00:17:05,560
nur dann können wir einen bestimmten Kommentar zurücksenden, der gefragt wurde.

211
00:17:05,560 --> 00:17:07,680
Also, in diesem Fall

212
00:17:07,680 --> 00:17:14,525
werden wir sagen, StatusCode ist 200, setHeader-Anwendung json,

213
00:17:14,525 --> 00:17:19,895
und dann hier werden wir dish.comments zurücksenden,

214
00:17:19,895 --> 00:17:25,300
und wir senden diesen speziellen Kommentar zurück.

215
00:17:25,300 --> 00:17:29,350
Also, das ist der spezifische Kommentar, den wir max senden.

216
00:17:29,350 --> 00:17:37,925
Dies ermöglicht es uns, einen bestimmten Kommentar aus dem Satz von Kommentaren abzurufen.

217
00:17:37,925 --> 00:17:46,895
Jetzt werden wir sonst sagen, wenn Gericht gleich null ist.

218
00:17:46,895 --> 00:17:49,180
Also das Geschirr null,

219
00:17:49,180 --> 00:17:55,830
dann müssen wir natürlich angeben, dass das Gericht nicht existiert und

220
00:17:55,830 --> 00:18:02,105
die letzte Bedingung ist, wenn der Kommentar selbst null ist.

221
00:18:02,105 --> 00:18:08,360
Also, in diesem Fall muss ich auch angeben, dass der Kommentar selbst nicht existiert,

222
00:18:08,360 --> 00:18:13,130
dass bestimmte Kommentar-ID nicht existiert, also in diesem Fall

223
00:18:13,130 --> 00:18:15,355
werde ich sagen, dass neuer

224
00:18:15,355 --> 00:18:23,930
Fehlerkommentar req.params.CommentID nicht gefunden wurde.

225
00:18:23,930 --> 00:18:25,520
Also, drei Bedingungen.

226
00:18:25,520 --> 00:18:31,045
Zuerst müssen Sie sicherstellen, dass zuerst das Gericht existiert und die Teller Kommentare existieren,

227
00:18:31,045 --> 00:18:34,285
wenn sie es tun, dann kann ich den spezifischen Kommentar zurücksenden,

228
00:18:34,285 --> 00:18:41,505
wenn nicht, wenn das Gericht selbst nicht auf der Serverseite in der Datenbank existiert,

229
00:18:41,505 --> 00:18:44,340
dann werde ich darauf hinweisen, dass das Gericht nicht existiert, aber wenn

230
00:18:44,340 --> 00:18:47,300
das Gericht existiert, aber der Kommentar existiert nicht,

231
00:18:47,300 --> 00:18:50,870
dann werde ich die Nachricht zurücksenden, die besagt, dass der Kommentar nicht existiert.

232
00:18:50,870 --> 00:18:55,495
Beachten Sie also, dass sie alle möglichen Bedingungen hier für das GET behandeln müssen.

233
00:18:55,495 --> 00:18:57,500
Für den POST natürlich

234
00:18:57,500 --> 00:19:01,895
wird der Post-Vorgang auf diesem Endpunkt nicht unterstützt,

235
00:19:01,895 --> 00:19:04,060
also sagen wir

236
00:19:08,900 --> 00:19:18,100
Kommentare Schrägstrich req.params.CommentID.

237
00:19:18,950 --> 00:19:26,205
Daher wird der POST-Vorgang für diese Kommentar-ID nicht unterstützt. Und was ist mit PUT?

238
00:19:26,205 --> 00:19:31,360
PUT ist hier ein interessanterer Fall.

239
00:19:31,360 --> 00:19:33,550
Also, noch einmal für den Einsatz,

240
00:19:33,550 --> 00:19:40,205
muss ich all diese möglichen Bedingungen behandeln,

241
00:19:40,205 --> 00:19:49,150
also werde ich mir das ansehen und sagen, okay dafür,

242
00:19:49,370 --> 00:19:55,045
lassen Sie mich diesen ganzen Code kopieren, weil wir

243
00:19:55,045 --> 00:20:03,260
all diese Möglichkeiten behandeln müssen und dann werde ich Ihnen genau sagen, wie wir mit dem PUT-Fall hier umgehen.

244
00:20:03,260 --> 00:20:06,685
Also, im Falle von PUT,

245
00:20:06,685 --> 00:20:10,140
zuerst müssen wir natürlich das Gemetzel lokalisieren.

246
00:20:10,140 --> 00:20:13,600
Also werden sie sagen, Gerichte finden nach Id req param Id,

247
00:20:13,600 --> 00:20:20,845
dann wenn das Gericht existiert und der Kommentar selbst existiert,

248
00:20:20,845 --> 00:20:23,080
dann weiß ich, dass ich den Kommentar aktualisieren kann.

249
00:20:23,080 --> 00:20:28,660
Andernfalls müssen diese beiden Bedingungen natürlich gepflegt werden,

250
00:20:28,660 --> 00:20:32,740
dass dieser Kommentar nicht existiert oder das Gericht nicht existiert.

251
00:20:32,740 --> 00:20:35,350
Diese beiden werden bereits von diesem Fall behandelt.

252
00:20:35,350 --> 00:20:38,190
Nun, hier ist die besondere Situation, die wir haben.

253
00:20:38,190 --> 00:20:45,355
Also, wenn das Gericht existiert und der spezifische Kommentar, den ich suche, auch existiert,

254
00:20:45,355 --> 00:20:50,300
dann weiß ich, dass im Hauptteil der Nachricht

255
00:20:50,300 --> 00:20:53,760
das Update für den Kommentar angegeben wird.

256
00:20:53,760 --> 00:20:55,625
Also muss ich das aktualisieren.

257
00:20:55,625 --> 00:21:00,760
Also, irgendwo hier mache ich Modifikationen,

258
00:21:00,760 --> 00:21:02,910
ich mache hier ein Gericht,

259
00:21:02,910 --> 00:21:10,110
also gehe ich hinein und kopiere ein wenig dieses Codes von hier,

260
00:21:10,960 --> 00:21:17,680
natürlich ist das nicht das Richtige, aber ich brauche nur einen Teil des Codes von dort,

261
00:21:17,680 --> 00:21:19,940
also werde ich in den PUT kommen.

262
00:21:19,940 --> 00:21:23,270
Lassen Sie mich es hier einfügen und

263
00:21:23,270 --> 00:21:27,340
dann sage ich Ihnen genau, wie sie damit umgehen werden.

264
00:21:27,700 --> 00:21:31,200
Weil ich das Gericht sparen brauche.

265
00:21:31,200 --> 00:21:39,510
Also, wie gehen wir mit dem Update zu einem bestimmten Kommentar um?

266
00:21:39,510 --> 00:21:45,265
Was wir also für die Aktualisierung eines bestimmten Kommentars wissen, ist, dass dieser Kommentar aktualisiert werden muss,

267
00:21:45,265 --> 00:21:49,900
damit wir wissen, dass das Gericht existiert und der Kommentar selbst existiert.

268
00:21:49,900 --> 00:21:53,885
Ich möchte die Felder des aktuellen aktualisieren.

269
00:21:53,885 --> 00:21:56,690
Nun, wenn ein Kommentar bereits vorhanden ist,

270
00:21:56,690 --> 00:21:59,530
möchte ich dem Benutzer nicht erlauben, den Autor des Kommentars zu ändern,

271
00:21:59,530 --> 00:22:00,890
der Autor sollte beibehalten werden.

272
00:22:00,890 --> 00:22:09,090
Die einzigen beiden Felder, die ich dem Benutzer erlauben würde, ist die Bewertung.

273
00:22:09,090 --> 00:22:12,380
Im Hauptteil der eingehenden PUT-Nachricht

274
00:22:12,380 --> 00:22:15,089
kann ich entweder

275
00:22:15,089 --> 00:22:17,680
die aktualisierte Bewertung

276
00:22:21,830 --> 00:22:28,110
oder den aktualisierten Kommentar einfügen.

277
00:22:28,110 --> 00:22:33,475
Dies sind die einzigen zwei Dinge, die ich dem Benutzer erlauben werde, zu ändern.

278
00:22:33,475 --> 00:22:40,190
Also, wenn die Bewertung Eigenschaft ies indirekten Körper zu nennen, dass der Körper

279
00:22:40,190 --> 00:22:47,940
die Aktualisierung enthalten, die wir versuchen, dies in diesem Fall zu tun, werden wir sagen Gericht.

280
00:22:48,240 --> 00:22:51,460
Also sagen wir Gericht Kommentare,

281
00:22:51,460 --> 00:22:54,000
also lassen Sie mich einfach diesen Teil kopieren.

282
00:22:54,000 --> 00:22:56,980
Dish Kommentar Kommentar Id.

283
00:22:56,980 --> 00:23:02,770
Jetzt ist dies eine einfache Möglichkeit, dieses Problem hier zu behandeln.

284
00:23:05,950 --> 00:23:11,525
Da es keine spezifische Möglichkeit gibt,

285
00:23:11,525 --> 00:23:16,655
einen bestimmten Kommentar zu aktualisieren, der sich in einem Unterdokument

286
00:23:16,655 --> 00:23:19,330
befindet, gibt es keine spezifische Methode dafür.

287
00:23:19,330 --> 00:23:24,950
Das ist also die Problemumgehung, die ich gefunden habe, die für uns zu funktionieren scheint,

288
00:23:24,950 --> 00:23:32,820
also sagen wir Gericht Kommentare req Parameter Kommentar ID Bewertung gleich req body.rating.

289
00:23:34,700 --> 00:23:37,640
Also werde ich die Bewertung aktualisieren.

290
00:23:37,640 --> 00:23:42,420
In ähnlicher Weise, wenn der Kommentar dort existiert,

291
00:23:42,420 --> 00:23:51,995
dann werde ich sagen, req Kommentar Id Kommentar req Körperkommentar.

292
00:23:51,995 --> 00:23:57,655
Also, das ist, wie ich werde die Bewertung und den Kommentar aktualisieren,

293
00:23:57,655 --> 00:24:00,230
und ich sage einmal über die aktualisierte Bewertung und den Kommentar,

294
00:24:00,230 --> 00:24:02,155
und sie werden das Gericht speichern,

295
00:24:02,155 --> 00:24:08,140
und dann, wenn ich das Gericht speichern, dann werde ich die Antwort zurücksenden.

296
00:24:08,140 --> 00:24:15,120
Beachten Sie also, dass dies der einzige Weg ist, den ich gefunden habe, der einfach genug ist,

297
00:24:15,120 --> 00:24:22,785
um ein eingebettetes Unterdokument in einem Dokument von Mongoose zu aktualisieren.

298
00:24:22,785 --> 00:24:28,520
Es gibt keine explizite Möglichkeit, dass Mongoose zum Aktualisieren eines eingebetteten Dokuments unterstützt.

299
00:24:28,520 --> 00:24:34,275
Dies ist also die Problemumgehung, die ich gefunden habe, die es uns ermöglicht, diesen Vorgang auszuführen.

300
00:24:34,275 --> 00:24:38,825
Jetzt für den Löschvorgang.

301
00:24:38,825 --> 00:24:43,940
Für den Löschvorgang löschen wir nur einen spezifischen

302
00:24:43,940 --> 00:24:48,880
Kommentar, also werde ich diese Informationen aus

303
00:24:48,880 --> 00:24:53,915
dem Deleter für alle Kommentare nehmen

304
00:24:53,915 --> 00:24:55,880
und anstatt alle Kommentare

305
00:24:55,880 --> 00:24:58,190
zu löschen, werde ich nur einen bestimmten Kommentar löschen.

306
00:24:58,190 --> 00:25:03,095
Also, lassen Sie mich das aus dem Löschen kopieren.

307
00:25:03,095 --> 00:25:07,920
Lassen Sie mich es hier einfügen und dann werden wir das aktualisieren.

308
00:25:07,920 --> 00:25:13,910
Also, wenn ich einen bestimmten Kommentar lösche, so werde ich zuerst das Gericht finden.

309
00:25:13,910 --> 00:25:17,240
Wenn das Gericht nicht null ist,

310
00:25:17,240 --> 00:25:21,480
erinnern Sie sich, dass ich in dieser Situation sowohl das Gericht

311
00:25:21,480 --> 00:25:26,395
nicht null als auch den Kommentar nicht null behandeln muss.

312
00:25:26,395 --> 00:25:29,150
Also, ich werde sagen, wenn

313
00:25:32,890 --> 00:25:39,840
Gericht nicht gleich null und Gericht Kommentare id Parameter ungleich null,

314
00:25:39,840 --> 00:25:44,335
dann weiß ich, dass ich einen bestimmten Kommentar habe, den ich löschen möchte.

315
00:25:44,335 --> 00:25:45,850
Ich lösche nicht alle Kommentare,

316
00:25:45,850 --> 00:25:49,770
ich lösche hier nur einen bestimmten Kommentar.

317
00:25:49,770 --> 00:25:58,700
Also, ich werde sagen, Gericht Kommentare ID und dann lösche ich den spezifischen Kommentar hier, der

318
00:25:58,700 --> 00:26:07,780
req.params.Commentid ist, und entfernen Sie

319
00:26:07,780 --> 00:26:14,565
diesen bestimmten Kommentar und dann werde ich das aktualisierte Gericht speichern und dann weiter mit, dass.

320
00:26:14,565 --> 00:26:19,225
Nun, der andere Teil, den ich brauche, um beide Situationen zu behandeln.

321
00:26:19,225 --> 00:26:23,180
Also, lassen Sie mich diesen Teil kopieren, wenn Gericht nicht gleich null und

322
00:26:23,180 --> 00:26:28,420
so weiter und dann ersetzen Sie dies hier.

323
00:26:28,420 --> 00:26:33,480
Also, wenn das Gericht null ist, werde ich den Fehler zurücksenden, der besagt, dass das Gericht nicht existiert.

324
00:26:33,480 --> 00:26:37,640
Wenn der Kommentar null ist, werde ich den Fehler zurücksenden, der besagt, dass der Kommentar nicht existiert.

325
00:26:37,640 --> 00:26:39,520
Also, das ist es,

326
00:26:39,520 --> 00:26:41,770
das ist das Update, das ich hier mache. Um

327
00:26:41,770 --> 00:26:44,395
einen bestimmten Kommentar zu löschen,

328
00:26:44,395 --> 00:26:47,670
werde ich zuerst sicherstellen, dass das Gericht und der Kommentar

329
00:26:47,670 --> 00:26:52,040
existieren, dann lösche ich den spezifischen Kommentar und dann werde ich

330
00:26:52,040 --> 00:26:54,520
die Änderungen

331
00:26:54,520 --> 00:27:00,315
am Gericht speichern und dann mit der Behandlung der restlichen Fälle fortfahren, das war's.

332
00:27:00,315 --> 00:27:05,310
Lassen Sie uns die Änderungen speichern und schauen Sie sich dann an, wie das funktioniert. Wenn ich

333
00:27:05,310 --> 00:27:07,210
zum Terminal gehe,

334
00:27:07,210 --> 00:27:12,150
sehe ich, dass MongoDB-Server nicht läuft und läuft, also lasst uns dort anfangen.

335
00:27:12,150 --> 00:27:14,000
Stellen Sie sicher,

336
00:27:14,000 --> 00:27:16,075
dass der MongoDB-Server läuft und läuft,

337
00:27:16,075 --> 00:27:19,070
lassen Sie uns auch unseren Express-Server starten.

338
00:27:19,890 --> 00:27:23,165
Sobald Ihr Express-Server läuft,

339
00:27:23,165 --> 00:27:27,185
was wir tun werden, ist, dass wir jetzt speziell auf

340
00:27:27,185 --> 00:27:32,420
die Kommentare schauen und dann Operationen auf die Kommentare durchführen.

341
00:27:32,420 --> 00:27:36,320
Also, lassen Sie uns zum Postboten gehen und

342
00:27:36,320 --> 00:27:44,540
dann überprüfen, was wir in der Datenbank haben und dann versuchen, die Kommentare zu ändern.

343
00:27:44,540 --> 00:27:47,760
Also, hier bin ich in Postman,

344
00:27:47,760 --> 00:27:53,265
also lass mich zuerst das Geschirr holen und jetzt sehe ich, dass das Geschirr leer ist.

345
00:27:53,265 --> 00:28:02,385
Also lassen Sie mich ein Gericht auf Liste der Gerichte schreiben, so lassen Sie mich ein Gericht posten.

346
00:28:02,385 --> 00:28:04,860
Erinnern Sie sich, dass wir dieses Gericht ihr haben,

347
00:28:04,860 --> 00:28:11,540
so hatte ich in meinem Postboten das bereits für die vorherige Übung getan.

348
00:28:11,540 --> 00:28:16,160
Ich werde nur das auswählen und dann das Gericht posten und dann

349
00:28:16,160 --> 00:28:21,205
sehen Sie, dass dieses spezielle Gericht hier unten hier gepostet wurde.

350
00:28:21,205 --> 00:28:25,060
Sie können sehen, dass das Gericht direkt dort erstellt wurde.

351
00:28:25,060 --> 00:28:33,970
Lassen Sie mich jetzt das spezielle Gericht ID kopieren und dann werde ich

352
00:28:33,970 --> 00:28:45,505
jetzt das Gericht hier holen.

353
00:28:45,505 --> 00:28:49,920
Sie sehen also, dass dieses spezielle Gericht hier existiert.

354
00:28:49,920 --> 00:28:52,575
Lassen Sie uns zuerst alle Kommentare bekommen.

355
00:28:52,575 --> 00:28:55,480
Also, wenn ich ein get auf die Kommentare,

356
00:28:55,480 --> 00:28:58,370
die Sie bemerken, dass alle Kommentare für dieses bestimmte Gericht zurückgegeben wurden.

357
00:28:58,370 --> 00:29:02,195
Wir können den Beitrag und das Löschen auch tun.

358
00:29:02,195 --> 00:29:05,865
Lassen Sie uns das machen und natürlich können Sie keinen Put auf dem

359
00:29:05,865 --> 00:29:09,960
Rücken machen, so dass Sie bemerken, dass die Put-Operation daran nicht funktioniert.

360
00:29:09,960 --> 00:29:13,110
Lassen Sie uns einen neuen Kommentar schreiben.

361
00:29:13,110 --> 00:29:18,070
Um einen neuen Kommentar zu posten, gehen wir in den Körper,

362
00:29:18,380 --> 00:29:28,990
und dann lassen Sie mich alle diese ausschneiden und dann bearbeiten wir einen

363
00:29:28,990 --> 00:29:31,130
der Kommentare und

364
00:29:35,790 --> 00:29:40,045
versuchen dann, diesen Kommentar zu posten.

365
00:29:40,045 --> 00:29:45,130
Also, wir sagen Bewertung drei und dann

366
00:29:45,130 --> 00:29:56,110
sagen wir Testkommentar, Testbenutzer.

367
00:29:56,110 --> 00:29:58,425
Lassen Sie uns diesen Kommentar posten.

368
00:29:58,425 --> 00:30:00,190
Wenn Sie diesen Kommentar posten,

369
00:30:00,190 --> 00:30:05,920
sehen Sie, dass das Update Dish hier zurückgegeben wurde und Sie sehen, dass

370
00:30:05,920 --> 00:30:14,530
in diesem Gericht Sie sehen, dass der neue Kommentar aufgenommen wurde.

371
00:30:14,530 --> 00:30:20,335
Also, lassen Sie uns das ganze Ding kopieren.

372
00:30:20,335 --> 00:30:27,515
Jetzt werden wir versuchen, diesen speziellen Kommentar zu erhalten, den wir gerade eingefügt haben.

373
00:30:27,515 --> 00:30:31,440
Für diesen bestimmten Kommentar ist dies die ID dieses Kommentars.

374
00:30:31,440 --> 00:30:35,180
Lassen Sie mich also die ID für diesen spezifischen Kommentar kopieren.

375
00:30:35,180 --> 00:30:38,545
Gehen Sie zurück zu Postman,

376
00:30:38,545 --> 00:30:43,915
lassen Sie mich versuchen, diesen spezifischen Kommentar abzurufen, indem Sie eine Get-Operation ausführen.

377
00:30:43,915 --> 00:30:48,380
Dort sehen Sie, dass dieser bestimmte Kommentar hier abgerufen wurde.

378
00:30:48,380 --> 00:30:52,050
Nun, wenn Sie versuchen, einen Beitrag dazu zu machen, wird das nicht funktionieren,

379
00:30:52,050 --> 00:30:56,445
so offensichtlich sehen Sie, dass der Post-Vorgang nicht erlaubt ist.

380
00:30:56,445 --> 00:31:01,370
Lassen Sie uns eine Put-Operation machen,

381
00:31:03,860 --> 00:31:06,385
zu diesem bestimmten Kommentar.

382
00:31:06,385 --> 00:31:10,010
Also, wenn ich Operation in den Körper setzen würde,

383
00:31:10,390 --> 00:31:18,285
werde ich sagen aktualisierte Testkommentar.

384
00:31:18,285 --> 00:31:23,200
Also werde ich das Kommentarfeld dieses Kommentars aktualisieren.

385
00:31:23,200 --> 00:31:28,745
Wenn Sie sagen, dass Sie darauf setzen, werden Sie sehen, dass für den spezifischen Kommentar,

386
00:31:28,745 --> 00:31:33,670
der Kommentar wurde jetzt aktualisiert, um den aktualisierten Testkommentar widerzuspiegeln.

387
00:31:33,670 --> 00:31:39,515
Sie sehen also, dass die Put-Operation im Kommentarfeld auch korrekt funktioniert.

388
00:31:39,515 --> 00:31:42,820
Lassen Sie uns diesen Kommentar löschen,

389
00:31:42,820 --> 00:31:46,660
damit ich den Kommentar löschen kann und wenn ich den Kommentar lösche

390
00:31:46,660 --> 00:31:50,475
, sehen Sie, dass dieser Kommentar aus der Liste der Kommentare verschwunden ist.

391
00:31:50,475 --> 00:31:53,915
Sie sehen also, dass der Löschvorgang auch funktioniert.

392
00:31:53,915 --> 00:31:55,970
Lassen Sie uns alle Kommentare löschen.

393
00:31:55,970 --> 00:32:00,595
Also werde ich hineingehen und alle Kommentare löschen.

394
00:32:00,595 --> 00:32:04,650
Dann sehen Sie, dass alle Kommentare gelöscht wurden,

395
00:32:04,650 --> 00:32:09,380
und so sehen Sie, dass der Kommentarbereich jetzt leer ist.

396
00:32:09,380 --> 00:32:13,050
Also, jetzt können Sie sie alle get, put, post

397
00:32:13,050 --> 00:32:14,905
und delete Operationen auf

398
00:32:14,905 --> 00:32:21,064
den Dishes/dishid/comments

399
00:32:21,064 --> 00:32:25,455
und die Dishes/dishid/comments/commentID,

400
00:32:25,455 --> 00:32:29,710
REST API-Endpunkte sehen alle wie erwartet funktionieren.

401
00:32:29,710 --> 00:32:32,670
Damit schließen wir diese Übung ab.

402
00:32:32,670 --> 00:32:38,365
Also, in dieser Übung haben wir die Implementierung der Schrägschalen abgeschlossen,

403
00:32:38,365 --> 00:32:42,395
REST API Endpunkt und unterstützt den ganzen Weg, um

404
00:32:42,395 --> 00:32:47,070
uns zu ermöglichen, ein einziges Gericht zu manipulieren,

405
00:32:47,070 --> 00:32:48,730
die Sammlung von Gerichten,

406
00:32:48,730 --> 00:32:52,165
einen einzigen Kommentar und auch die Sammlung von Kommentaren.

407
00:32:52,165 --> 00:32:56,930
Dies ist ein guter Zeitpunkt für Sie, ein Git-Commit mit der Nachricht,

408
00:32:56,930 --> 00:33:02,600
express, REST-API mit Mongoose Teil zwei zu machen.