1
00:00:03,950 --> 00:00:09,405
La deuxième partie de cet exercice traite

2
00:00:09,405 --> 00:00:15,340
des différentes opérations get put post et delete sur des sous-documents à l'intérieur du document.

3
00:00:15,340 --> 00:00:19,380
Comme nous l'avons vu dans l'exemple pour les plats,

4
00:00:19,380 --> 00:00:26,680
nous avons vu que les commentaires sont inclus

5
00:00:26,680 --> 00:00:31,680
dans le plat lui-même comme un sous-document, de la façon dont nous avons défini à la fois le schéma de commentaire et le schéma de plat,

6
00:00:31,680 --> 00:00:35,150
puis définir le modèle de plat en incluant le schéma de commentaire

7
00:00:35,150 --> 00:00:38,880
dans le schéma de plat comme un tableau de commentaires.

8
00:00:38,880 --> 00:00:43,580
Et nous avons vu dans l'exercice précédent comment les commentaires sont enfermés

9
00:00:43,580 --> 00:00:50,990
dans un tableau sous la forme d'un tableau de documents à l'intérieur de chaque document plat.

10
00:00:50,990 --> 00:00:55,525
Alors, comment pouvons-nous apporter des modifications aux commentaires eux-mêmes ?

11
00:00:55,525 --> 00:00:59,590
Comment obtenons-nous toute la liste des commentaires pour un plat ?

12
00:00:59,590 --> 00:01:06,515
Comment modifier un commentaire spécifique dans le plat et ainsi de suite ?

13
00:01:06,515 --> 00:01:10,820
Donc, c'est ce que nous allons voir sur

14
00:01:10,820 --> 00:01:16,130
la façon de les soutenir en utilisant les différentes opérations get put post and delete sur

15
00:01:16,130 --> 00:01:22,385
les plats plats barre oblique ID plat commentaires et les plats

16
00:01:22,385 --> 00:01:29,935
slash dish ID slash commentaires slash commentaire ID API REST.

17
00:01:29,935 --> 00:01:32,885
Pour commencer cet exercice,

18
00:01:32,885 --> 00:01:35,735
encore une fois, en revenant au routeur plat,

19
00:01:35,735 --> 00:01:44,170
ils ont déjà vu comment nous gérons le point de terminaison de la barre oblique et le point de terminaison de l'ID de la barre oblique.

20
00:01:44,170 --> 00:01:50,300
Maintenant, une grande partie de ce travail que nous faisons ici est déjà utile pour nous,

21
00:01:50,300 --> 00:01:53,855
donc ce que je vais faire est de copier ce code,

22
00:01:53,855 --> 00:02:01,070
puis nous allons modifier ce code de manière appropriée pour gérer les commentaires et l'ID de commentaire.

23
00:02:01,070 --> 00:02:04,250
Donc, je vais copier tout ce code que nous avons

24
00:02:04,250 --> 00:02:08,750
ici à la fois pour la barre oblique et l'ID de plat d'or slash,

25
00:02:08,750 --> 00:02:14,300
et ensuite nous allons le coller juste ci-dessous à nouveau.

26
00:02:14,300 --> 00:02:17,795
Et puis nous entrerons et modifierons chacun d'entre eux.

27
00:02:17,795 --> 00:02:21,470
Donc, nous avons vu que si vous regardez en arrière,

28
00:02:21,470 --> 00:02:27,800
le premier est de manipuler la barre oblique qui sera montée sur le point de terminaison des plats slash.

29
00:02:27,800 --> 00:02:30,905
Et le suivant s'occupe de l'ID de la barre oblique.

30
00:02:30,905 --> 00:02:37,410
Donc, le troisième devrait être de gérer les commentaires barre oblique ID plat.

31
00:02:37,410 --> 00:02:39,060
Donc, en descendant ici,

32
00:02:39,060 --> 00:02:49,080
cette troisième route de routeur plat serait des commentaires slash dish ID slash.

33
00:02:49,080 --> 00:02:51,300
Et puis le dernier, bien sûr,

34
00:02:51,300 --> 00:02:56,610
serait slash dish ID

35
00:02:56,610 --> 00:03:05,670
commentaires slash puis slash ID commentaire deux-points.

36
00:03:05,670 --> 00:03:09,289
Donc, maintenant que nous avons mis à jour ces routes ici,

37
00:03:09,289 --> 00:03:12,380
maintenant l'étape suivante est d'aller et de corriger

38
00:03:12,380 --> 00:03:16,310
le code dans les opérations get put post and delete ici.

39
00:03:16,310 --> 00:03:22,025
Donc, nous allons commencer avec le point de terminaison des commentaires Slash dish ID Slash.

40
00:03:22,025 --> 00:03:25,530
Donc, dans le cas de la barre oblique ID commentaire point de terminaison,

41
00:03:25,530 --> 00:03:31,425
donc nous allons faire des plats trouver mais au lieu de dire plats trouver,

42
00:03:31,425 --> 00:03:38,100
nous allons faire des plats trouver par

43
00:03:38,100 --> 00:03:45,595
ID et donc nous allons trouver le plat spécifique que nous recherchons.

44
00:03:45,595 --> 00:03:53,335
Donc, ici, nous allons chercher cet ID plat req params,

45
00:03:53,335 --> 00:03:57,820
donc nous allons d'abord chercher le plat,

46
00:03:57,820 --> 00:04:02,900
et donc cela retournera un plat spécifique.

47
00:04:02,900 --> 00:04:06,865
Donc, quand il retourne ce plat spécifique ici,

48
00:04:06,865 --> 00:04:13,475
alors ce qu'ils vont vérifier à l'intérieur ici

49
00:04:13,475 --> 00:04:20,765
est que si plat n'est pas égal à null.

50
00:04:20,765 --> 00:04:24,169
Il est tout à fait possible que le plat n'existe pas,

51
00:04:24,169 --> 00:04:28,000
donc si nous recherchons un plat spécifique avec une carte d'identité,

52
00:04:28,000 --> 00:04:29,495
ce plat peut ne pas exister,

53
00:04:29,495 --> 00:04:35,360
donc nous devons nous soucier de gérer cette situation particulière.

54
00:04:35,360 --> 00:04:39,590
Donc, nous allons gérer cette partie à l'intérieur ici,

55
00:04:39,590 --> 00:04:43,985
et donc si elle n'est pas nulle alors cela signifie que le plat existe.

56
00:04:43,985 --> 00:04:51,125
Donc je vais découper ça et le coller là dedans.

57
00:04:51,125 --> 00:04:54,150
Et puis dans ce cas,

58
00:04:54,150 --> 00:04:56,940
puisque le plat n'est pas nul,

59
00:04:56,940 --> 00:05:02,300
donc nous allons retourner le code d'état et l'en-tête de l'ensemble,

60
00:05:02,300 --> 00:05:07,755
puis ceci ici, nous allons retourner les commentaires de plat,

61
00:05:07,755 --> 00:05:13,685
parce que nous sommes invités à retourner uniquement les commentaires pour ce plat particulier, donc nous allons dire,

62
00:05:13,685 --> 00:05:16,365
« Les plats trouvent par ID,

63
00:05:16,365 --> 00:05:20,390
puis req paramètres plat ID, puis plat. »

64
00:05:20,390 --> 00:05:25,540
Et donc nous allons retourner les commentaires de plat ici.

65
00:05:25,540 --> 00:05:30,320
Sinon, c'est donc l'autre partie.

66
00:05:30,320 --> 00:05:33,500
Donc, ce qui signifie que le plat n'existe pas.

67
00:05:33,500 --> 00:05:35,295
Donc, dans ce cas,

68
00:05:35,295 --> 00:05:43,095
nous construirons une erreur ici en disant de nouvelles erreurs et ensuite nous dirons

69
00:05:43,095 --> 00:05:56,515
plat req params id introuvable.

70
00:05:56,515 --> 00:05:59,840
Donc ce plat particulier n'a pas été trouvé,

71
00:05:59,840 --> 00:06:04,100
donc évidemment nous ne serons pas en mesure de retourner les commentaires pour le plat non existant.

72
00:06:04,100 --> 00:06:05,560
Donc, dans ce cas,

73
00:06:05,560 --> 00:06:09,740
nous allons donc créer un nouvel objet d'erreur, puis nous allons

74
00:06:09,740 --> 00:06:15,090
définir le statut dans l'objet d'erreur à 404.

75
00:06:15,090 --> 00:06:17,855
Encore une fois, c'est 404 introuvable,

76
00:06:17,855 --> 00:06:23,420
et puis nous reviendrons prochaine erreur.

77
00:06:23,420 --> 00:06:24,990
Maintenant, pourquoi on fait ça ?

78
00:06:24,990 --> 00:06:29,885
Parce que si vous renvoyez ceci comme une erreur, comme vous vous en souviendrez,

79
00:06:29,885 --> 00:06:33,665
cela sera géré par votre fichier app.js,

80
00:06:33,665 --> 00:06:35,565
donc dans le fichier app.js,

81
00:06:35,565 --> 00:06:37,220
juste en bas ici,

82
00:06:37,220 --> 00:06:40,700
nous avons le gestionnaire d'erreurs ici.

83
00:06:40,700 --> 00:06:42,685
Donc, quand il arrive ici,

84
00:06:42,685 --> 00:06:48,410
cela définira le reste ou le statut sur l'état du point d'erreur,

85
00:06:48,410 --> 00:06:49,900
que nous avions défini sur 404, donc c'est ce qui sera retourné,

86
00:06:49,900 --> 00:06:56,720
puis il prendra simplement cette erreur et rendra cette erreur ici.

87
00:06:56,720 --> 00:07:01,020
Donc, cela prendra soin de rendre les erreurs.

88
00:07:01,020 --> 00:07:07,080
Donc, cela retournera le message d'erreur à notre client.

89
00:07:07,080 --> 00:07:09,490
C' est ce que nous invoquons ici,

90
00:07:09,490 --> 00:07:11,090
donc si le plat n'existe pas,

91
00:07:11,090 --> 00:07:15,475
nous allons juste renvoyer cette erreur ici à partir de l'opération get.

92
00:07:15,475 --> 00:07:19,475
Maintenant, pour la poste en cas de poste,

93
00:07:19,475 --> 00:07:24,920
nous nous attendons à ce qu'ils soient

94
00:07:24,920 --> 00:07:30,980
retournés un ID plat, puis nous allons chercher le plat,

95
00:07:30,980 --> 00:07:35,840
puis nous allons prendre l'ensemble des commentaires

96
00:07:35,840 --> 00:07:41,555
du corps et ensuite le pousser dans le plat là-bas.

97
00:07:41,555 --> 00:07:46,375
Donc, nous allons dire des plats, encore une fois, ici,

98
00:07:46,375 --> 00:07:52,750
nous devrons faire la découverte par id parce que nous sommes à la recherche du plat spécifique ici.

99
00:07:52,750 --> 00:07:59,485
Donc, pour le poste, nous allons dire plat trouver par ID puis plat,

100
00:07:59,485 --> 00:08:01,750
et donc à l'intérieur ici,

101
00:08:01,750 --> 00:08:04,060
si le plat existe,

102
00:08:04,060 --> 00:08:06,555
alors nous allons manipuler le plat de manière appropriée.

103
00:08:06,555 --> 00:08:10,360
Si ce n'est pas le cas, nous devrons envoyer le message d'erreur.

104
00:08:10,360 --> 00:08:16,730
Alors laissez-moi copier cette partie du get et ensuite,

105
00:08:16,730 --> 00:08:20,710
nous allons remplacer ceci ici.

106
00:08:22,130 --> 00:08:25,155
Donc, évidemment, si le plat n'existe pas,

107
00:08:25,155 --> 00:08:27,165
alors nous allons retourner cette erreur ici,

108
00:08:27,165 --> 00:08:31,035
mais si le plat existe, dans ce cas,

109
00:08:31,035 --> 00:08:35,930
nous allons retourner le code d'état 200 ensemble en-tête.

110
00:08:35,930 --> 00:08:41,835
Mais avant de passer la valeur,

111
00:08:41,835 --> 00:08:50,400
ce que je vais faire est de dire des commentaires plats,

112
00:08:50,400 --> 00:08:55,020
donc nous postons un nouvel ensemble de commentaires pour le plat.

113
00:08:55,130 --> 00:09:02,790
Donc, nous allons dire que les commentaires de plat poussent le corps req.

114
00:09:02,790 --> 00:09:07,785
Parce que le corps du message contient tous les commentaires qui doivent être poussés ici,

115
00:09:07,785 --> 00:09:13,890
puis, nous dirons, « Dish save ».

116
00:09:13,890 --> 00:09:22,010
Et donc si la sauvegarde revient avec succès avec le plat ici,

117
00:09:22,010 --> 00:09:27,030
nous allons donc envoyer le plat mis à jour à partir d'ici.

118
00:09:32,350 --> 00:09:40,600
Donc, cette partie où nous construisons le code d'état,

119
00:09:40,600 --> 00:09:49,750
nous allons le faire à l'intérieur ici et ensuite nous enverrons le dos le

120
00:09:54,320 --> 00:10:00,875
RES.JSON et le plat que nous avons obtenu ici.

121
00:10:00,875 --> 00:10:04,885
Donc, ce que nous faisons, c'est que nous gardons le plat ici.

122
00:10:04,885 --> 00:10:11,430
Nous poussons d'abord les commentaires dans le plat là-bas,

123
00:10:11,430 --> 00:10:14,420
le nouvel ensemble de commentaires dans le plat ici,

124
00:10:14,420 --> 00:10:19,210
puis nous sauvegardons le plat mis à jour ici.

125
00:10:19,210 --> 00:10:20,825
Ensuite, après la sauvegarde,

126
00:10:20,825 --> 00:10:29,070
nous allons retourner le plat mis à jour à l'utilisateur ici.

127
00:10:29,290 --> 00:10:32,125
Ensuite, s'il y a une erreur,

128
00:10:32,125 --> 00:10:37,370
alors nous allons gérer l'erreur comme nous l'avons fait ici.

129
00:10:38,570 --> 00:10:41,420
Si le plat n'existe pas, bien sûr,

130
00:10:41,420 --> 00:10:45,825
nous allons retourner l'erreur en disant que le plat n'existe pas.

131
00:10:45,825 --> 00:10:47,475
Donc, c'est pour le poste.

132
00:10:47,475 --> 00:10:49,100
L' opération PUT, bien sûr,

133
00:10:49,100 --> 00:10:51,680
n'est pas prise en charge sur les plats.

134
00:10:51,680 --> 00:10:53,140
Donc, dans ce cas,

135
00:10:53,140 --> 00:10:56,210
nous essayons d'effectuer l'opération PUT

136
00:10:56,210 --> 00:11:06,550
sur les plats, req.params.dishid/Comments.

137
00:11:08,370 --> 00:11:10,980
Donc, ce n'est pas autorisé.

138
00:11:10,980 --> 00:11:13,415
Donc, c'est ce que nous disons pour l'opération PUT.

139
00:11:13,415 --> 00:11:15,545
Pour l'opération de suppression,

140
00:11:15,545 --> 00:11:19,130
ce que nous allons faire est d'abord trouver le plat.

141
00:11:19,130 --> 00:11:22,275
Donc, nous allons dire « Dish.TroudByID ».

142
00:11:22,275 --> 00:11:27,785
Donc, supprimer signifie que nous supprimons tous les commentaires du plat,

143
00:11:27,785 --> 00:11:28,850
pas du plat lui-même,

144
00:11:28,850 --> 00:11:31,540
mais nous supprimons tous les commentaires du plat.

145
00:11:31,540 --> 00:11:33,495
Donc, dans ce cas,

146
00:11:33,495 --> 00:11:41,695
ce que nous finirons par faire est comme suit : donc si le plat n'est pas nul,

147
00:11:41,695 --> 00:11:47,345
rappelez-vous que nous devons le gérer en disant alors plat.

148
00:11:47,345 --> 00:11:49,400
Si le plat n'est pas nul,

149
00:11:49,400 --> 00:11:53,080
alors nous supprimerions tous les commentaires du plat.

150
00:11:53,080 --> 00:11:57,480
Donc, je vais copier ce code, puis le coller ici,

151
00:11:57,480 --> 00:12:00,880
puis nous allons éditer ce code, puis supprimer.

152
00:12:00,880 --> 00:12:06,070
Nous verrons si le plat n'est pas nul,

153
00:12:06,070 --> 00:12:10,085
alors ils retourneront le plat ici.

154
00:12:10,085 --> 00:12:12,495
Donc, si le plat n'est pas nul,

155
00:12:12,495 --> 00:12:16,700
le wat que nous gérerions ceci est comme suit.

156
00:12:16,700 --> 00:12:24,975
Donc, nous devrons aller et supprimer chacun des commentaires.

157
00:12:24,975 --> 00:12:36,380
Donc, nous allons dire pour (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
Donc, nous allons littéralement dans et supprimer chaque commentaire.

160
00:12:55,860 --> 00:12:56,380
Donc, nous allons dire

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
On va dire supprimer.

163
00:13:15,060 --> 00:13:19,490
Donc, nous allons enlever chacun des plats,

164
00:13:19,490 --> 00:13:22,520
un sous chacun des commentaires un par un.

165
00:13:23,420 --> 00:13:26,910
Donc, c'est ce que nous allons faire aux commentaires.

166
00:13:26,910 --> 00:13:30,600
Ensuite, une fois que nous avons supprimé tous les commentaires pour le plat,

167
00:13:30,600 --> 00:13:34,800
alors nous devrons enregistrer le plat, puis renvoyer.

168
00:13:34,800 --> 00:13:38,345
Donc, plus tôt aussi quand nous modifions le plat,

169
00:13:38,345 --> 00:13:39,760
c'est ce que nous avons fait ici.

170
00:13:39,760 --> 00:13:43,250
Donc, je vais copier cette partie,

171
00:13:43,610 --> 00:13:46,415
puis venir ici, puis

172
00:13:46,415 --> 00:13:52,060
dire plat.save,

173
00:13:52,060 --> 00:13:57,085
alors nous allons retourner le plat

174
00:13:57,085 --> 00:14:02,470
ici pour indiquer le plat mis à jour étant retourné ici.

175
00:14:02,470 --> 00:14:05,130
Donc, c'est ainsi que nous allons supprimer les commentaires.

176
00:14:05,130 --> 00:14:07,225
Donc, ici nous allons dans,

177
00:14:07,225 --> 00:14:10,800
maintenant il n'y a pas de moyen facile de tirer littéralement

178
00:14:10,800 --> 00:14:15,330
tous les commentaires du tableau lorsque vous avez un sous-document.

179
00:14:15,330 --> 00:14:19,680
Donc, vous devez entrer et supprimer chaque sous-document un par un.

180
00:14:19,680 --> 00:14:22,720
Donc, c'est ce que je fais dans cette boucle ici.

181
00:14:22,720 --> 00:14:27,500
Donc, je dis pour (var i = dish.comments.length).

182
00:14:27,500 --> 00:14:31,270
Donc, je regarde le tableau de commentaires, puis à partir

183
00:14:31,270 --> 00:14:35,430
du dernier commentaire dans ce tableau jusqu'au tout premier commentaire,

184
00:14:35,430 --> 00:14:38,940
je vais dans et puis supprimer commentaire par commentaire ici en utilisant

185
00:14:38,940 --> 00:14:42,905
l'opération de suppression sur le sous-document.

186
00:14:42,905 --> 00:14:47,320
Donc, la façon dont nous allons accéder à un sous-document est en disant

187
00:14:47,320 --> 00:14:53,720
plat et ensuite les commentaires est le nom du champ, puis je dis id ici.

188
00:14:53,720 --> 00:14:56,259
Donc, c'est ainsi que vous accédez à un sous-document,

189
00:14:56,259 --> 00:15:02,115
et à l'intérieur, vous spécifiez l'identifiant des sous-documents auxquels vous essayez d'accéder.

190
00:15:02,115 --> 00:15:06,310
Donc, tout cela vous donnera accès au sous-document,

191
00:15:06,310 --> 00:15:09,670
puis nous appelons la méthode remove sur le sous-document,

192
00:15:09,670 --> 00:15:14,320
et donc ce sous-document sera supprimé du tableau de sous-documents.

193
00:15:14,320 --> 00:15:17,980
Ensuite, après que nous avons supprimé tous les commentaires,

194
00:15:17,980 --> 00:15:21,075
je vais enregistrer les modifications et c'est tout.

195
00:15:21,075 --> 00:15:25,840
Donc, tous mes commentaires seront supprimés de puis plat.

196
00:15:25,840 --> 00:15:33,335
Maintenant, nous allons traiter du prochain point final qui est DisHidComments/:CommentID.

197
00:15:33,335 --> 00:15:35,460
Donc, dans ce cas,

198
00:15:35,460 --> 00:15:42,410
nous allons commencer par localiser d'abord le plat, puis après avoir localisé le plat,

199
00:15:42,410 --> 00:15:47,460
puis nous devons nous assurer que le plat existe,

200
00:15:47,460 --> 00:15:49,310
puis traiter le plat.

201
00:15:49,310 --> 00:15:52,320
Donc, je vais supprimer cette partie,

202
00:15:52,320 --> 00:15:59,350
et puis nous allons dire que nous allons copier cette partie du git que nous avions plus tôt

203
00:16:09,140 --> 00:16:13,650
parce que nous devons être capables de faire face à la situation

204
00:16:13,650 --> 00:16:20,095
où le plat n'existe pas ou le plat existe mais les commentaires n'existent pas,

205
00:16:20,095 --> 00:16:23,870
ou le plat lui-même n'existe pas.

206
00:16:23,870 --> 00:16:28,280
Donc, il y a trois conditions que je dois tester.

207
00:16:28,280 --> 00:16:32,650
Donc, nous allons dire si (plat ! =

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, ce qui signifie que le plat lui-même existe et aussi les commentaires existent dans le plat,

210
00:17:00,545 --> 00:17:05,560
seulement alors nous pouvons renvoyer un commentaire spécifique qui a été demandé.

211
00:17:05,560 --> 00:17:07,680
Donc, dans ce cas,

212
00:17:07,680 --> 00:17:14,525
nous dirons que StatusCode est 200, application setHeader json,

213
00:17:14,525 --> 00:17:19,895
puis ici nous enverrons dish.comments,

214
00:17:19,895 --> 00:17:25,300
et nous renvoyons ce commentaire particulier.

215
00:17:25,300 --> 00:17:29,350
Donc, c'est le commentaire spécifique que nous envoyons max.

216
00:17:29,350 --> 00:17:37,925
Donc, cela nous permettra de récupérer un commentaire spécifique de l'ensemble des commentaires.

217
00:17:37,925 --> 00:17:46,895
Maintenant, nous allons dire autre si plat égal à null.

218
00:17:46,895 --> 00:17:49,180
Donc, les plats nuls,

219
00:17:49,180 --> 00:17:55,830
alors bien sûr, nous devrons indiquer que le plat n'existe pas et

220
00:17:55,830 --> 00:18:02,105
la dernière condition est si le commentaire lui-même est nul.

221
00:18:02,105 --> 00:18:08,360
Donc, dans ce cas aussi, je dois indiquer que le commentaire lui-même n'existe pas,

222
00:18:08,360 --> 00:18:13,130
cet ID de commentaire particulier n'existe pas donc dans ce cas,

223
00:18:13,130 --> 00:18:15,355
je dirai que le nouveau

224
00:18:15,355 --> 00:18:23,930
commentaire d'erreur req.params.commentId n'existe pas.

225
00:18:23,930 --> 00:18:25,520
Donc, trois conditions. Tout d'

226
00:18:25,520 --> 00:18:31,045
abord, vous devez vous assurer que le plat existe et que les commentaires de plat existent,

227
00:18:31,045 --> 00:18:34,285
s'ils le font, je peux renvoyer le commentaire spécifique,

228
00:18:34,285 --> 00:18:41,505
sinon, si le plat lui-même n'existe pas du côté serveur dans la base de données,

229
00:18:41,505 --> 00:18:44,340
alors je vais indiquer que le plat n'existe pas mais si

230
00:18:44,340 --> 00:18:47,300
le plat n'existe pas existe mais le commentaire n'existe pas,

231
00:18:47,300 --> 00:18:50,870
alors je vais renvoyer le message disant que le commentaire n'existe pas.

232
00:18:50,870 --> 00:18:55,495
Donc, notez qu'ils doivent gérer toutes les conditions possibles ici pour le GET.

233
00:18:55,495 --> 00:18:57,500
Pour le POST bien sûr,

234
00:18:57,500 --> 00:19:01,895
la post-opération n'est pas prise en charge sur ce point de terminaison,

235
00:19:01,895 --> 00:19:04,060
donc nous dirons

236
00:19:08,900 --> 00:19:18,100
commentaires slash req.params.commentId.

237
00:19:18,950 --> 00:19:26,205
Ainsi, l'opération POST n'est pas prise en charge sur cet ID de commentaire. Maintenant, qu'en est-il de PUT ?

238
00:19:26,205 --> 00:19:31,360
PUT est un cas plus intéressant ici.

239
00:19:31,360 --> 00:19:33,550
Donc, encore une fois, même pour la mise,

240
00:19:33,550 --> 00:19:40,205
je dois gérer toutes ces conditions possibles,

241
00:19:40,205 --> 00:19:49,150
donc je vais regarder cela et dire, ok pour cela,

242
00:19:49,370 --> 00:19:55,045
laissez-moi copier tout ce code parce que nous devons gérer

243
00:19:55,045 --> 00:20:03,260
toutes ces possibilités et ensuite je vais vous dire exactement comment nous gérons le cas PUT ici.

244
00:20:03,260 --> 00:20:06,685
Donc, en cas de PUT,

245
00:20:06,685 --> 00:20:10,140
bien sûr, nous devons d'abord localiser le carnage.

246
00:20:10,140 --> 00:20:13,600
Donc, ils diront que les plats trouvent par Id req param Id,

247
00:20:13,600 --> 00:20:20,845
alors si le plat existe et le commentaire lui-même existe,

248
00:20:20,845 --> 00:20:23,080
alors je sais que je peux mettre à jour le commentaire.

249
00:20:23,080 --> 00:20:28,660
Sinon, ces deux conditions doivent évidemment être prises en compte,

250
00:20:28,660 --> 00:20:32,740
ce commentaire n'existe pas ou le plat n'existe pas.

251
00:20:32,740 --> 00:20:35,350
Ces deux-là sont déjà traités par cette affaire.

252
00:20:35,350 --> 00:20:38,190
Maintenant, voici la situation particulière que nous connaissons.

253
00:20:38,190 --> 00:20:45,355
Donc, si le plat existe et que le commentaire spécifique que je cherche existe également,

254
00:20:45,355 --> 00:20:50,300
alors ce que je sais est que dans le corps du message,

255
00:20:50,300 --> 00:20:53,760
la mise à jour du commentaire est spécifiée.

256
00:20:53,760 --> 00:20:55,625
J' ai donc besoin de mettre à jour ça.

257
00:20:55,625 --> 00:21:00,760
Donc, quelque part ici, je fais des modifications,

258
00:21:00,760 --> 00:21:02,910
je fais un plat sauver ici,

259
00:21:02,910 --> 00:21:10,110
donc je vais aller et copier un peu de ce code à partir d'ici,

260
00:21:10,960 --> 00:21:17,680
bien sûr, ce n'est pas la bonne chose mais j'ai juste besoin d'une partie du code à partir de là,

261
00:21:17,680 --> 00:21:19,940
donc je vais entrer dans le PUT.

262
00:21:19,940 --> 00:21:23,270
Laisse-moi le coller ici et

263
00:21:23,270 --> 00:21:27,340
je te dirai exactement comment ils vont gérer ça.

264
00:21:27,700 --> 00:21:31,200
Parce que j'ai besoin de la partie de sauvegarde de la vaisselle.

265
00:21:31,200 --> 00:21:35,950
Alors, comment traitons-nous la mise à jour d'un commentaire spécifique ?

266
00:21:35,950 --> 00:21:39,510
Donc, pour la mise à jour d'un commentaire spécifique, que

267
00:21:39,510 --> 00:21:45,265
savons-nous est que ce commentaire doit être mis à jour,

268
00:21:45,265 --> 00:21:49,900
donc nous savons que le plat existe et le commentaire lui-même existe.

269
00:21:49,900 --> 00:21:53,885
Je veux mettre à jour les champs du courant.

270
00:21:53,885 --> 00:21:56,690
Maintenant, si un commentaire existe déjà, je ne veux pas

271
00:21:56,690 --> 00:21:59,530
permettre à l'utilisateur de changer l'auteur du commentaire,

272
00:21:59,530 --> 00:22:00,890
l'auteur devrait conserver.

273
00:22:00,890 --> 00:22:09,090
Les deux seuls champs que j'autoriserais la mise à jour de l'utilisateur est la note.

274
00:22:09,090 --> 00:22:12,380
Donc, dans le corps du message PUT entrant,

275
00:22:12,380 --> 00:22:15,089
je peux soit inclure

276
00:22:15,089 --> 00:22:17,680
la note mise à jour

277
00:22:21,830 --> 00:22:28,110
ou le commentaire mis à jour.

278
00:22:28,110 --> 00:22:33,475
Ce sont les deux seules choses que je vais permettre à l'utilisateur de changer.

279
00:22:33,475 --> 00:22:40,190
Donc, si le si la propriété de notation est corps indirect pour appeler que le corps

280
00:22:40,190 --> 00:22:47,940
contiendra la mise à jour que nous essayons de le faire dans ce cas, nous dirons plat.

281
00:22:48,240 --> 00:22:51,460
Donc nous allons dire des commentaires plats,

282
00:22:51,460 --> 00:22:54,000
alors laissez-moi juste copier cette partie.

283
00:22:54,000 --> 00:22:56,980
Commentaire Dish Id.

284
00:22:56,980 --> 00:23:02,770
Maintenant, c'est un moyen simple de gérer ce problème ici.

285
00:23:05,950 --> 00:23:11,525
Comme il n'y a pas de moyen spécifique de mettre à jour

286
00:23:11,525 --> 00:23:16,655
un commentaire spécifique qui se trouve dans un sous-document,

287
00:23:16,655 --> 00:23:19,330
il n'y a pas de méthode spécifique pour le faire.

288
00:23:19,330 --> 00:23:24,950
Donc, c'est la solution de contournement que j'ai trouvée qui semble fonctionner pour nous,

289
00:23:24,950 --> 00:23:32,820
donc nous dirons les commentaires plats req paramètre commentaire Id rating égal à req body.rating.

290
00:23:34,700 --> 00:23:37,640
Je vais donc mettre à jour la note.

291
00:23:37,640 --> 00:23:42,420
De même, si le commentaire existe là,

292
00:23:42,420 --> 00:23:51,995
alors je dirai req commentaire Id commentaire req body commentaire.

293
00:23:51,995 --> 00:23:57,655
Donc, c'est comme ça que je vais mettre à jour la note et le commentaire,

294
00:23:57,655 --> 00:24:00,230
et je dis une fois sur la mise à jour de la note et le commentaire,

295
00:24:00,230 --> 00:24:02,155
et ils vont enregistrer le plat,

296
00:24:02,155 --> 00:24:08,140
puis une fois que j'ai enregistré le plat, puis je vais renvoyer la réponse.

297
00:24:08,140 --> 00:24:15,120
Donc, notez que c'est la seule façon que j'ai trouvée qui est assez facile de

298
00:24:15,120 --> 00:24:22,785
mettre à jour un sous-document incorporé dans un document de Mongoose.

299
00:24:22,785 --> 00:24:28,520
Mongoose ne prend pas en charge explicitement la mise à jour d'un document incorporé.

300
00:24:28,520 --> 00:24:34,275
C' est donc la solution de contournement que j'ai trouvée qui nous permet d'effectuer cette opération.

301
00:24:34,275 --> 00:24:38,825
Maintenant pour l'opération de suppression.

302
00:24:38,825 --> 00:24:43,940
Pour l'opération de suppression, nous supprimons seulement un

303
00:24:43,940 --> 00:24:48,880
commentaire spécifique, donc je vais prendre cette information

304
00:24:48,880 --> 00:24:53,915
du deleter pour tous les commentaires

305
00:24:53,915 --> 00:24:55,880
et au lieu de supprimer tous les commentaires,

306
00:24:55,880 --> 00:24:58,190
je vais seulement supprimer un commentaire spécifique.

307
00:24:58,190 --> 00:25:03,095
Donc, laissez-moi copier cela à partir de la suppression.

308
00:25:03,095 --> 00:25:07,920
Laissez-moi le coller ici et ensuite nous mettrons à jour ceci.

309
00:25:07,920 --> 00:25:13,910
Donc, si je supprime un commentaire spécifique donc je vais d'abord trouver le plat.

310
00:25:13,910 --> 00:25:17,240
Si le plat n'est pas nul,

311
00:25:17,240 --> 00:25:21,480
rappelez-vous que dans cette situation, je dois gérer à la fois le plat

312
00:25:21,480 --> 00:25:26,395
n'étant pas nul et aussi le commentaire n'étant pas nul.

313
00:25:26,395 --> 00:25:29,150
Donc, je dirai que si le

314
00:25:32,890 --> 00:25:39,840
paramètre dish n'est pas égal à null et dish comments id pas égal à null,

315
00:25:39,840 --> 00:25:44,335
alors je sais que j'ai un commentaire spécifique que je veux supprimer.

316
00:25:44,335 --> 00:25:45,850
Je ne supprime pas tous les commentaires,

317
00:25:45,850 --> 00:25:49,770
je ne supprime qu'un commentaire spécifique ici.

318
00:25:49,770 --> 00:25:58,700
Donc, je vais dire les commentaires de plat id et puis je supprime le commentaire spécifique ici qui

319
00:25:58,700 --> 00:26:07,780
est req.params.commentId et supprimer

320
00:26:07,780 --> 00:26:14,565
ce commentaire particulier, puis je vais enregistrer le plat mis à jour et ensuite passer à cela.

321
00:26:14,565 --> 00:26:19,225
Maintenant, l'autre partie que j'ai besoin de gérer les deux situations.

322
00:26:19,225 --> 00:26:23,180
Donc, laissez-moi copier cette partie sinon si plat n'est pas égal à null et

323
00:26:23,180 --> 00:26:28,420
ainsi de suite, puis remplacer ceci ici.

324
00:26:28,420 --> 00:26:33,480
Donc, si le plat est nul alors je vais renvoyer l'erreur disant que le plat n'existe pas.

325
00:26:33,480 --> 00:26:37,640
Si le commentaire est nul, je vais renvoyer l'erreur en disant que le commentaire n'existe pas.

326
00:26:37,640 --> 00:26:39,520
Donc, c'est ça,

327
00:26:39,520 --> 00:26:41,770
c'est la mise à jour que je fais ici.

328
00:26:41,770 --> 00:26:44,395
Pour supprimer un commentaire spécifique,

329
00:26:44,395 --> 00:26:47,670
je vais d'abord m'assurer que le plat et le commentaire

330
00:26:47,670 --> 00:26:52,040
existent, puis je vais supprimer le commentaire spécifique et ensuite je vais enregistrer

331
00:26:52,040 --> 00:26:54,520
les changements dans le plat, puis continuer

332
00:26:54,520 --> 00:27:00,315
à gérer le reste des cas, c'est tout.

333
00:27:00,315 --> 00:27:05,310
Sauvegardons les changements, puis regardons comment cela fonctionne.

334
00:27:05,310 --> 00:27:07,210
Aller au terminal,

335
00:27:07,210 --> 00:27:12,150
je vois que le serveur MongoDB n'est pas en marche et fonctionne donc commençons là.

336
00:27:12,150 --> 00:27:14,000
Assurez-vous, bien sûr,

337
00:27:14,000 --> 00:27:16,075
que le serveur MongoDB est opérationnel, nous

338
00:27:16,075 --> 00:27:19,070
allons également démarrer notre serveur express.

339
00:27:19,890 --> 00:27:23,165
Une fois que votre serveur express est opérationnel,

340
00:27:23,165 --> 00:27:27,185
ce que nous allons faire, c'est maintenant que nous examinons spécifiquement

341
00:27:27,185 --> 00:27:32,420
les commentaires, puis effectuons des opérations sur les commentaires.

342
00:27:32,420 --> 00:27:36,320
Alors, allons au Facteur,

343
00:27:36,320 --> 00:27:44,540
puis vérifier ce que nous avons dans la base de données, puis essayer de modifier les commentaires.

344
00:27:44,540 --> 00:27:47,760
Donc, je suis ici à Postman,

345
00:27:47,760 --> 00:27:53,265
alors laissez-moi d'abord chercher la vaisselle et maintenant je vois que les plats sont tous vides.

346
00:27:53,265 --> 00:28:02,385
Alors laissez-moi poster un plat à la liste des plats alors laissez-moi poster un plat.

347
00:28:02,385 --> 00:28:04,860
Rappelons que nous avons ce plat elle,

348
00:28:04,860 --> 00:28:11,540
donc dans mon facteur, je l'avais déjà fait pour l'exercice précédent.

349
00:28:11,540 --> 00:28:16,160
Je vais juste sélectionner cela, puis poster ce plat et puis vous

350
00:28:16,160 --> 00:28:21,205
voyez que ce plat particulier a été posté ici, en bas ici.

351
00:28:21,205 --> 00:28:25,060
Vous pouvez voir que le plat a été créé juste là.

352
00:28:25,060 --> 00:28:33,970
Laisse-moi copier cet identifiant de plat et je vais

353
00:28:33,970 --> 00:28:45,505
maintenant chercher ce plat ici.

354
00:28:45,505 --> 00:28:49,920
Donc, vous voyez que ce plat particulier existe ici.

355
00:28:49,920 --> 00:28:52,575
Tout d'abord, obtenons tous les commentaires.

356
00:28:52,575 --> 00:28:55,480
Donc, si je fais un obtenir sur les commentaires que vous remarquez que

357
00:28:55,480 --> 00:28:58,370
tous les commentaires pour ce plat particulier ont été retournés.

358
00:28:58,370 --> 00:29:02,195
Nous pouvons faire le post et la suppression aussi.

359
00:29:02,195 --> 00:29:05,865
Faisons une mise sur cela et évidemment, vous ne pouvez pas faire une mise en

360
00:29:05,865 --> 00:29:09,960
arrière donc vous remarquez que l'opération de mise ne fonctionne pas là-dessus.

361
00:29:09,960 --> 00:29:13,110
Envoyez-nous un nouveau commentaire.

362
00:29:13,110 --> 00:29:18,070
Donc, pour poster un nouveau commentaire, nous allons aller dans le corps,

363
00:29:18,380 --> 00:29:28,990
puis laissez-moi découper tous ces et ensuite nous allons éditer

364
00:29:28,990 --> 00:29:31,130
l'un des commentaires, puis

365
00:29:35,790 --> 00:29:40,045
essayer de poster ce commentaire.

366
00:29:40,045 --> 00:29:45,130
Donc, nous allons dire note trois et ensuite nous

367
00:29:45,130 --> 00:29:56,110
dirons commentaire de test, utilisateur de test.

368
00:29:56,110 --> 00:29:58,425
Envoyez-nous ce commentaire.

369
00:29:58,425 --> 00:30:00,190
Lorsque vous publiez ce commentaire,

370
00:30:00,190 --> 00:30:05,920
vous voyez que le plat de mise à jour a été retourné ici et vous voyez que dans

371
00:30:05,920 --> 00:30:14,530
ce plat vous voyez que le nouveau commentaire a été inclus dedans.

372
00:30:14,530 --> 00:30:20,335
Alors, copions tout ça.

373
00:30:20,335 --> 00:30:27,515
Maintenant, nous allons essayer d'obtenir ce commentaire particulier que nous venons d'insérer.

374
00:30:27,515 --> 00:30:31,440
Pour ce commentaire particulier, c'est l'identifiant de ce commentaire.

375
00:30:31,440 --> 00:30:35,180
Alors laissez-moi copier l'identifiant pour ce commentaire spécifique.

376
00:30:35,180 --> 00:30:38,545
Pour revenir à Postman,

377
00:30:38,545 --> 00:30:43,915
laissez-moi essayer de récupérer ce commentaire spécifique en faisant une opération get.

378
00:30:43,915 --> 00:30:48,380
Là, vous voyez que ce commentaire particulier a été récupéré ici.

379
00:30:48,380 --> 00:30:52,050
Maintenant, si vous essayez de faire un post à ce sujet, cela ne fonctionnera pas

380
00:30:52,050 --> 00:30:56,445
si évidemment vous voyez que la post-opération n'est pas autorisée sur cela.

381
00:30:56,445 --> 00:31:01,370
Faisons une opération de mise,

382
00:31:03,860 --> 00:31:06,385
sur ce commentaire particulier.

383
00:31:06,385 --> 00:31:10,010
Donc, si je devais mettre l'opération dans le corps,

384
00:31:10,390 --> 00:31:18,285
je vais dire un commentaire de test mis à jour.

385
00:31:18,285 --> 00:31:23,200
Donc, je vais mettre à jour le champ de commentaire de ce commentaire.

386
00:31:23,200 --> 00:31:28,745
Si vous dites de mettre cela, vous verrez que pour le commentaire spécifique,

387
00:31:28,745 --> 00:31:33,670
le commentaire a maintenant été mis à jour pour refléter le commentaire de test mis à jour.

388
00:31:33,670 --> 00:31:39,515
Ainsi, vous voyez que l'opération de mise sur le champ des commentaires fonctionne également correctement.

389
00:31:39,515 --> 00:31:42,820
Supprimons ce commentaire,

390
00:31:42,820 --> 00:31:46,660
donc je peux supprimer le commentaire, puis quand je supprime le commentaire, vous

391
00:31:46,660 --> 00:31:50,475
verrez que ce commentaire a disparu de la liste des commentaires.

392
00:31:50,475 --> 00:31:53,915
Ainsi, vous voyez que l'opération de suppression fonctionne également.

393
00:31:53,915 --> 00:31:55,970
Supprimons tous les commentaires.

394
00:31:55,970 --> 00:32:00,595
Donc, je vais entrer et supprimer tous les commentaires.

395
00:32:00,595 --> 00:32:04,650
Ensuite, vous voyez que tous les commentaires ont été supprimés,

396
00:32:04,650 --> 00:32:09,380
et vous voyez donc que la zone des commentaires est maintenant vide.

397
00:32:09,380 --> 00:32:13,050
Donc, maintenant vous pouvez les voir toutes les

398
00:32:13,050 --> 00:32:14,905
opérations get, put, post et delete sur

399
00:32:14,905 --> 00:32:21,064
les plats/dishid/commentaires

400
00:32:21,064 --> 00:32:25,455
et les plats/dishid/commentaires/commentID,

401
00:32:25,455 --> 00:32:29,710
REST API fonctionnent comme prévu.

402
00:32:29,710 --> 00:32:32,670
Donc, avec cela, nous complétons cet exercice.

403
00:32:32,670 --> 00:32:38,365
Donc, dans cet exercice, nous avons terminé la mise en œuvre des plats slash,

404
00:32:38,365 --> 00:32:42,395
point de terminaison de l'API REST et pris en charge jusqu'

405
00:32:42,395 --> 00:32:47,070
à nous permettre de manipuler un seul plat,

406
00:32:47,070 --> 00:32:48,730
la collection de plats,

407
00:32:48,730 --> 00:32:52,165
un seul commentaire et aussi la collection de commentaires.

408
00:32:52,165 --> 00:32:56,930
C' est le bon moment pour vous de faire un commit git avec le message,

409
00:32:56,930 --> 00:33:02,600
express, API REST avec Mongoose partie deux.