1
00:00:03,950 --> 00:00:09,405
La segunda parte de este ejercicio trata de

2
00:00:09,405 --> 00:00:15,340
las diversas operaciones get put post y delete en sub-documentos dentro del documento.

3
00:00:15,340 --> 00:00:19,380
Como vimos en el ejemplo de platos,

4
00:00:19,380 --> 00:00:26,680
vimos que los comentarios se incluyen dentro del plato en sí como un sub-documento,

5
00:00:26,680 --> 00:00:31,680
en la forma en que definimos tanto el esquema de comentario como el esquema de plato,

6
00:00:31,680 --> 00:00:35,150
y luego definimos el modelo de plato incluyendo el esquema de comentario

7
00:00:35,150 --> 00:00:38,880
en el esquema de plato como una matriz de comentarios.

8
00:00:38,880 --> 00:00:43,580
Y vimos en el ejercicio anterior cómo los comentarios están encerrados dentro de

9
00:00:43,580 --> 00:00:50,990
una matriz en forma de matriz de documentos dentro de cada documento plato.

10
00:00:50,990 --> 00:00:55,525
Entonces, ¿cómo hacemos modificaciones a los propios comentarios?

11
00:00:55,525 --> 00:00:59,590
¿ Cómo obtenemos toda la lista de comentarios para un plato?

12
00:00:59,590 --> 00:01:06,515
¿ Cómo modificamos un comentario específico en el plato y así sucesivamente?

13
00:01:06,515 --> 00:01:10,820
Así que esto es lo que veremos acerca de cómo

14
00:01:10,820 --> 00:01:16,130
apoyarlos usando las diversas operaciones get put post y eliminar en

15
00:01:16,130 --> 00:01:22,385
los platos plato slash plato ID slash comentarios y los platos

16
00:01:22,385 --> 00:01:29,935
slash dish id slash slash comentarios slash comentario ID API REST puntos finales.

17
00:01:29,935 --> 00:01:32,885
Para empezar en este ejercicio, de

18
00:01:32,885 --> 00:01:35,735
nuevo, volviendo al router de plato,

19
00:01:35,735 --> 00:01:44,170
ya han visto cómo manejamos el extremo de barra y el extremo de ID de plato de barra.

20
00:01:44,170 --> 00:01:50,300
Ahora, gran parte de este trabajo que hacemos aquí ya es útil para nosotros,

21
00:01:50,300 --> 00:01:53,855
así que lo que voy a hacer es copiar este código,

22
00:01:53,855 --> 00:02:01,070
y luego editaremos ese código apropiadamente para manejar los comentarios y el ID del comentario.

23
00:02:01,070 --> 00:02:04,250
Así que voy a copiar todo este código que tenemos

24
00:02:04,250 --> 00:02:08,750
aquí tanto para la barra como para la identificación del plato dorado de barra,

25
00:02:08,750 --> 00:02:14,300
y luego lo pegaremos justo debajo aquí de nuevo.

26
00:02:14,300 --> 00:02:17,795
Y luego entraremos y modificaremos cada uno de ellos.

27
00:02:17,795 --> 00:02:21,470
Así que hemos visto que si miras hacia arriba,

28
00:02:21,470 --> 00:02:27,800
el primero es manejar la barra que se montará en el extremo de los platos de barra.

29
00:02:27,800 --> 00:02:30,905
Y el siguiente es manejar la identificación del plato de corte.

30
00:02:30,905 --> 00:02:37,410
Por lo tanto, el tercero debería estar manejando los comentarios de la barra de identificación del plato de barra.

31
00:02:37,410 --> 00:02:39,060
Así que yendo aquí,

32
00:02:39,060 --> 00:02:49,080
esta ruta del enrutador de tercer plato sería slash Dish ID slash comentarios.

33
00:02:49,080 --> 00:02:51,300
Y luego el último, por supuesto,

34
00:02:51,300 --> 00:02:56,610
sería slash dish ID slash

35
00:02:56,610 --> 00:03:05,670
comentarios y luego recortar dos puntos ID de comentario.

36
00:03:05,670 --> 00:03:09,289
Así que ahora que hemos actualizado estas rutas aquí,

37
00:03:09,289 --> 00:03:12,380
ahora el siguiente paso es entrar y arreglar

38
00:03:12,380 --> 00:03:16,310
el código en la publicación get put y eliminar las operaciones aquí.

39
00:03:16,310 --> 00:03:22,025
Así que vamos a empezar con el punto final de los comentarios de ID de barra diagonal.

40
00:03:22,025 --> 00:03:25,530
Por lo tanto, en caso de que el plato slash ID slash comentarios punto final, por

41
00:03:25,530 --> 00:03:31,425
lo que vamos a hacer platos encontrar pero en lugar de decir

42
00:03:31,425 --> 00:03:38,100
platos encontrar, vamos a hacer platos

43
00:03:38,100 --> 00:03:45,595
encontrar por ID y así encontraremos el plato específico que estamos buscando.

44
00:03:45,595 --> 00:03:53,335
Así que aquí, vamos a buscar ese ID de plato de params req,

45
00:03:53,335 --> 00:03:57,820
por lo que primero vamos a buscar el plato,

46
00:03:57,820 --> 00:04:02,900
y por lo que esto devolverá un plato específico.

47
00:04:02,900 --> 00:04:06,865
Entonces, cuando devuelve ese plato específico aquí,

48
00:04:06,865 --> 00:04:13,475
entonces lo que verificarán dentro de aquí

49
00:04:13,475 --> 00:04:20,765
es que si el plato no es igual a nulo.

50
00:04:20,765 --> 00:04:24,169
Es muy posible que el plato no exista,

51
00:04:24,169 --> 00:04:28,000
así que si buscamos un plato específico con una identificación de plato, es

52
00:04:28,000 --> 00:04:29,495
posible que ese plato no exista, por

53
00:04:29,495 --> 00:04:35,360
lo que debemos preocuparnos por manejar esa situación particular.

54
00:04:35,360 --> 00:04:39,590
Así que vamos a manejar esa parte dentro de aquí,

55
00:04:39,590 --> 00:04:43,985
y así si no es nulo entonces eso significa que el plato existe.

56
00:04:43,985 --> 00:04:51,125
Así que voy a cortar esto y luego pegarlo allí.

57
00:04:51,125 --> 00:04:54,150
Y luego en este caso,

58
00:04:54,150 --> 00:04:56,940
ya que el plato no es nulo,

59
00:04:56,940 --> 00:05:02,300
por lo que devolveremos el código de estado y el encabezado del conjunto y

60
00:05:02,300 --> 00:05:07,755
luego esto aquí vamos

61
00:05:07,755 --> 00:05:13,685
a devolver los comentarios del plato, porque se nos pide que sólo devuelva los comentarios para ese plato en particular, así que vamos a decir:

62
00:05:13,685 --> 00:05:16,365
«Los platos encuentran por ID,

63
00:05:16,365 --> 00:05:20,390
luego req ID del plato parámetros y luego plato.»

64
00:05:20,390 --> 00:05:25,540
Y entonces devolveremos los comentarios del plato aquí.

65
00:05:25,540 --> 00:05:30,320
De lo contrario, esta es la parte más.

66
00:05:30,320 --> 00:05:33,500
Entonces, lo que significa que el plato no existe.

67
00:05:33,500 --> 00:05:35,295
Entonces, en este caso,

68
00:05:35,295 --> 00:05:43,095
construiríamos un error aquí diciendo nuevos errores y luego diremos

69
00:05:43,095 --> 00:05:56,515
dish req params dish ID no encontrado.

70
00:05:56,515 --> 00:05:59,840
Así que este plato en particular no fue encontrado,

71
00:05:59,840 --> 00:06:04,100
por lo que obviamente no podremos devolver los comentarios para el plato no existente.

72
00:06:04,100 --> 00:06:05,560
Entonces, en este caso,

73
00:06:05,560 --> 00:06:09,740
por lo que vamos a crear un nuevo objeto de error y luego vamos

74
00:06:09,740 --> 00:06:15,090
a establecer el estado en el objeto de error en 404.

75
00:06:15,090 --> 00:06:17,855
Una vez más, esto es 404 no encontrado,

76
00:06:17,855 --> 00:06:23,420
y luego vamos a volver siguiente error.

77
00:06:23,420 --> 00:06:24,990
Ahora, ¿por qué hacemos esto?

78
00:06:24,990 --> 00:06:29,885
Porque si devuelve esto como un error, como recordará,

79
00:06:29,885 --> 00:06:33,665
esto será manejado por su archivo app.js, por

80
00:06:33,665 --> 00:06:35,565
lo que en el archivo app.js,

81
00:06:35,565 --> 00:06:37,220
justo en la parte inferior aquí,

82
00:06:37,220 --> 00:06:40,700
tenemos el controlador de errores aquí.

83
00:06:40,700 --> 00:06:42,685
Entonces, cuando llegue aquí,

84
00:06:42,685 --> 00:06:46,560
esto establecerá el resto o estado en estado de punto de error,

85
00:06:46,560 --> 00:06:48,410
que habíamos establecido en 404,

86
00:06:48,410 --> 00:06:49,900
por lo que eso es lo que se devolverá,

87
00:06:49,900 --> 00:06:56,720
y luego simplemente tomará ese error y luego representará ese error aquí.

88
00:06:56,720 --> 00:07:01,020
Entonces eso se encargará de renderizar los errores.

89
00:07:01,020 --> 00:07:07,080
Así que esto devolverá el mensaje de error a nuestro cliente.

90
00:07:07,080 --> 00:07:09,490
Eso es lo que estamos invocando aquí,

91
00:07:09,490 --> 00:07:11,090
así que si el plato no existe,

92
00:07:11,090 --> 00:07:15,475
solo vamos a devolver ese error aquí desde la operación get.

93
00:07:15,475 --> 00:07:19,475
Ahora, para la publicación en caso de publicación,

94
00:07:19,475 --> 00:07:24,920
estamos esperando que se les

95
00:07:24,920 --> 00:07:30,980
devuelva una identificación de plato y luego vamos a buscar el plato,

96
00:07:30,980 --> 00:07:35,840
y luego vamos a tomar el conjunto de comentarios

97
00:07:35,840 --> 00:07:41,555
del cuerpo y luego empujarlo en el plato allí.

98
00:07:41,555 --> 00:07:46,375
Así que vamos a decir platos, de nuevo, aquí,

99
00:07:46,375 --> 00:07:52,750
tendremos que hacer el hallazgo por id porque estamos buscando el plato específico aquí.

100
00:07:52,750 --> 00:07:59,485
Así que para el post, diremos que el plato encuentre por identificación y luego plato,

101
00:07:59,485 --> 00:08:01,750
y así dentro de aquí,

102
00:08:01,750 --> 00:08:04,060
si el plato existe,

103
00:08:04,060 --> 00:08:06,555
entonces manejaremos el plato apropiadamente.

104
00:08:06,555 --> 00:08:10,360
Si no, entonces tendremos que enviar el mensaje de error.

105
00:08:10,360 --> 00:08:16,730
Así que permítanme copiar esta parte del get y entonces,

106
00:08:16,730 --> 00:08:20,710
vamos a reemplazar esto aquí.

107
00:08:22,130 --> 00:08:25,155
Así que, obviamente, si el plato no existe,

108
00:08:25,155 --> 00:08:27,165
entonces vamos a devolver este error aquí,

109
00:08:27,165 --> 00:08:31,035
pero si el plato existe, en ese caso,

110
00:08:31,035 --> 00:08:35,930
devolveremos el código de estado 200 set header.

111
00:08:35,930 --> 00:08:41,835
Pero antes de pasar de nuevo el valor,

112
00:08:41,835 --> 00:08:50,400
lo que voy a hacer es decir comentarios de plato,

113
00:08:50,400 --> 00:08:55,020
por lo que estamos publicando un nuevo conjunto de comentarios para el plato.

114
00:08:55,130 --> 00:09:02,790
Así que vamos a decir que los comentarios del plato empujan el cuerpo req.

115
00:09:02,790 --> 00:09:07,785
Debido a que el cuerpo del mensaje contiene todos los comentarios que deben ser empujados aquí,

116
00:09:07,785 --> 00:09:13,890
y luego, vamos a decir, «Dish guardar».

117
00:09:13,890 --> 00:09:22,010
Y así, si el guardado regresa con éxito con el plato aquí,

118
00:09:22,010 --> 00:09:27,030
entonces enviaremos el plato actualizado desde aquí.

119
00:09:32,350 --> 00:09:40,600
Así que esta parte donde estamos construyendo el código de estado,

120
00:09:40,600 --> 00:09:49,750
lo haremos dentro aquí y luego enviaremos la parte de atrás el

121
00:09:54,320 --> 00:10:00,875
Res.json y el plato que obtuvimos aquí.

122
00:10:00,875 --> 00:10:04,885
Entonces, lo que estamos haciendo es que estamos salvando el plato aquí.

123
00:10:04,885 --> 00:10:11,430
Primero estamos empujando los comentarios en el plato allí,

124
00:10:11,430 --> 00:10:14,420
el nuevo conjunto de comentarios en el plato aquí,

125
00:10:14,420 --> 00:10:19,210
y luego estamos guardando el plato actualizado aquí.

126
00:10:19,210 --> 00:10:20,825
Luego, después de guardar,

127
00:10:20,825 --> 00:10:29,070
vamos a devolver el plato actualizado al usuario aquí.

128
00:10:29,290 --> 00:10:32,125
Entonces, si hay un error,

129
00:10:32,125 --> 00:10:37,370
entonces manejaremos el error tal como lo hemos hecho aquí.

130
00:10:38,570 --> 00:10:41,420
Si el plato no existe, por supuesto,

131
00:10:41,420 --> 00:10:45,825
vamos a devolver el error diciendo que el plato no existe.

132
00:10:45,825 --> 00:10:47,475
Por lo tanto, esto es para el post.

133
00:10:47,475 --> 00:10:49,100
La operación PUT, por supuesto,

134
00:10:49,100 --> 00:10:51,680
no es compatible con los platos.

135
00:10:51,680 --> 00:10:53,140
Por lo tanto, en este caso,

136
00:10:53,140 --> 00:10:56,210
estamos tratando de realizar la operación PUT

137
00:10:56,210 --> 00:11:06,550
en los platos, req.Params.dishid/comentarios.

138
00:11:08,370 --> 00:11:10,980
Por lo tanto, esto no está permitido.

139
00:11:10,980 --> 00:11:13,415
Por lo tanto, eso es lo que estamos diciendo para la operación PUT.

140
00:11:13,415 --> 00:11:15,545
Para la operación de eliminación,

141
00:11:15,545 --> 00:11:19,130
lo que haremos es primero encontrar el plato.

142
00:11:19,130 --> 00:11:22,275
Entonces, diremos dish.FindbyId.

143
00:11:22,275 --> 00:11:27,785
Por lo tanto, eliminar significa que estamos eliminando todos los comentarios del plato,

144
00:11:27,785 --> 00:11:28,850
no el plato en sí,

145
00:11:28,850 --> 00:11:31,540
pero estamos eliminando todos los comentarios del plato.

146
00:11:31,540 --> 00:11:33,495
Entonces, en este caso,

147
00:11:33,495 --> 00:11:41,695
lo que terminaríamos haciendo es el siguiente: así que si el plato no es nulo,

148
00:11:41,695 --> 00:11:47,345
recuerde que tenemos que manejarlo diciendo luego plato.

149
00:11:47,345 --> 00:11:49,400
Si el plato no es

150
00:11:49,400 --> 00:11:53,080
nulo, eliminaríamos todos los comentarios del plato.

151
00:11:53,080 --> 00:11:57,480
Entonces, voy a copiar ese código y luego pegarlo aquí,

152
00:11:57,480 --> 00:12:00,880
y luego editaremos este código, luego eliminaremos.

153
00:12:00,880 --> 00:12:06,070
Veremos si el plato no es nulo,

154
00:12:06,070 --> 00:12:10,085
entonces devolverán el plato aquí.

155
00:12:10,085 --> 00:12:12,495
Por lo tanto, si el plato no es nulo,

156
00:12:12,495 --> 00:12:16,700
el wat que manejaríamos esto es el siguiente.

157
00:12:16,700 --> 00:12:24,975
Por lo tanto, tendremos que entrar y eliminar cada uno de los comentarios.

158
00:12:24,975 --> 00:12:36,380
Entonces, diremos para (var i =

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

160
00:12:49,940 --> 00:12:55,860
Por lo tanto, estamos literalmente entrando y eliminando cada comentario.

161
00:12:55,860 --> 00:12:56,380
Por lo tanto, diremos

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

163
00:13:11,370 --> 00:13:15,060
Diremos que elimines.

164
00:13:15,060 --> 00:13:19,490
Por lo tanto, vamos a quitar cada uno de los platos,

165
00:13:19,490 --> 00:13:22,520
uno debajo de cada uno de los comentarios uno por uno.

166
00:13:23,420 --> 00:13:26,910
Por lo tanto, esto es lo que haremos con los comentarios.

167
00:13:26,910 --> 00:13:30,600
Luego, una vez que hayamos eliminado todos los comentarios para el plato,

168
00:13:30,600 --> 00:13:34,800
entonces tendremos que guardar el plato y luego enviar de vuelta.

169
00:13:34,800 --> 00:13:38,345
Entonces, antes también cuando modificamos el plato,

170
00:13:38,345 --> 00:13:39,760
esto es lo que hicimos aquí.

171
00:13:39,760 --> 00:13:43,250
Entonces, voy a copiar esta parte,

172
00:13:43,610 --> 00:13:46,415
y luego entrar aquí,

173
00:13:46,415 --> 00:13:52,060
y luego decir plato.save,

174
00:13:52,060 --> 00:13:57,085
entonces devolveremos el plato

175
00:13:57,085 --> 00:14:02,470
aquí para indicar el plato actualizado que se devuelve aquí.

176
00:14:02,470 --> 00:14:05,130
Entonces, así es como eliminaremos los comentarios.

177
00:14:05,130 --> 00:14:07,225
Entonces, aquí vamos a entrar,

178
00:14:07,225 --> 00:14:10,800
ahora no hay una manera fácil de extraer literalmente

179
00:14:10,800 --> 00:14:15,330
todos los comentarios de la matriz cuando tiene un sub-documento.

180
00:14:15,330 --> 00:14:19,680
Por lo tanto, tienes que entrar y eliminar cada subdocumento uno por uno.

181
00:14:19,680 --> 00:14:22,720
Entonces, eso es lo que estoy haciendo en este bucle for aquí.

182
00:14:22,720 --> 00:14:27,500
Entonces, estoy diciendo para (var i = dish.comments.length).

183
00:14:27,500 --> 00:14:31,270
Por lo tanto, estoy mirando la matriz de comentarios y luego comenzando desde

184
00:14:31,270 --> 00:14:35,430
el último comentario en esa matriz hasta el primer comentario,

185
00:14:35,430 --> 00:14:38,940
voy a entrar y luego eliminar comentario por comentario aquí usando

186
00:14:38,940 --> 00:14:42,905
la operación de eliminación en el subdocumento.

187
00:14:42,905 --> 00:14:47,320
Entonces, la forma en que accederemos a un subdocumento es diciendo

188
00:14:47,320 --> 00:14:53,720
plato y luego comentarios es el nombre del campo y luego digo id aquí.

189
00:14:53,720 --> 00:14:56,259
Entonces, así es como accede a un subdocumento,

190
00:14:56,259 --> 00:15:02,115
y dentro de aquí especificará el id de los subdocumentos a los que está tratando de acceder. Por lo

191
00:15:02,115 --> 00:15:06,310
tanto, todo esto le dará acceso al subdocumento,

192
00:15:06,310 --> 00:15:09,670
y luego llamamos al método remove en el subdocumento,

193
00:15:09,670 --> 00:15:14,320
y para que el subdocumento se elimine de la matriz de subdocumentos.

194
00:15:14,320 --> 00:15:17,980
Luego, después de eso, después de haber eliminado todos los comentarios,

195
00:15:17,980 --> 00:15:21,075
guardaré los cambios y eso es todo.

196
00:15:21,075 --> 00:15:25,840
Por lo tanto, todos mis comentarios se eliminarán de entonces plato.

197
00:15:25,840 --> 00:15:33,335
Ahora, vamos a tratar con el siguiente punto final que es DishidComments/:CommentID.

198
00:15:33,335 --> 00:15:35,460
Entonces, en este caso,

199
00:15:35,460 --> 00:15:42,410
comenzaremos por localizar primero el plato y luego después de localizar el plato,

200
00:15:42,410 --> 00:15:47,460
entonces tenemos que asegurarnos de que el plato existe,

201
00:15:47,460 --> 00:15:49,310
y luego tratar con el plato.

202
00:15:49,310 --> 00:15:52,320
Por lo tanto, voy a borrar esta parte,

203
00:15:52,320 --> 00:15:59,350
y luego vamos a decir que vamos a copiar esta parte del git que teníamos antes

204
00:16:09,140 --> 00:16:13,650
porque tenemos que ser capaces de lidiar con la situación en la

205
00:16:13,650 --> 00:16:20,095
que el plato no existe o el plato existe pero los comentarios no existen,

206
00:16:20,095 --> 00:16:23,870
o el plato en sí no existe.

207
00:16:23,870 --> 00:16:28,280
Por lo tanto, hay tres condiciones que necesito probar.

208
00:16:28,280 --> 00:16:32,650
Por lo tanto, diremos si (plato! =

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

210
00:16:51,180 --> 00:17:00,545
nulo, lo que significa que el plato en sí existe y también los comentarios existen en el plato,

211
00:17:00,545 --> 00:17:05,560
sólo entonces podemos enviar de vuelta un comentario específico que se ha solicitado.

212
00:17:05,560 --> 00:17:07,680
Entonces, en ese caso,

213
00:17:07,680 --> 00:17:14,525
diremos que StatusCode es 200, la aplicación SetHeader json,

214
00:17:14,525 --> 00:17:19,895
y luego aquí enviaremos dish.comments,

215
00:17:19,895 --> 00:17:25,300
y estamos enviando de vuelta este comentario en particular.

216
00:17:25,300 --> 00:17:29,350
Por lo tanto, ese es el comentario específico que estamos enviando max.

217
00:17:29,350 --> 00:17:37,925
Por lo tanto, esto nos permitirá recuperar un comentario específico del conjunto de comentarios.

218
00:17:37,925 --> 00:17:46,895
Ahora, diremos otra cosa si plato igual a nulo.

219
00:17:46,895 --> 00:17:49,180
Así que los platos nulos,

220
00:17:49,180 --> 00:17:55,830
entonces por supuesto tendremos que indicar que el plato no existe y

221
00:17:55,830 --> 00:18:02,105
la última condición es si el comentario en sí es nulo.

222
00:18:02,105 --> 00:18:08,360
Por lo tanto, en ese caso también tengo que indicar que el comentario en sí no existe,

223
00:18:08,360 --> 00:18:13,130
ese ID de comentario particular no existe, así que en ese caso,

224
00:18:13,130 --> 00:18:15,355
diré que el nuevo

225
00:18:15,355 --> 00:18:23,930
comentario de error req.params.commentid no encontrado.

226
00:18:23,930 --> 00:18:25,520
Entonces, tres condiciones.

227
00:18:25,520 --> 00:18:31,045
Primero, tienes que asegurarte primero de que el plato existe y los comentarios del plato existen,

228
00:18:31,045 --> 00:18:34,285
si lo hacen entonces puedo devolver el comentario específico,

229
00:18:34,285 --> 00:18:41,505
si no, si el plato en sí no existe en el lado del servidor en la base de datos,

230
00:18:41,505 --> 00:18:44,340
entonces indicaré que el plato no existe, pero si

231
00:18:44,340 --> 00:18:47,300
el plato existe pero el comentario no existe,

232
00:18:47,300 --> 00:18:50,870
entonces enviaré el mensaje diciendo que el comentario no existe.

233
00:18:50,870 --> 00:18:55,495
Por lo tanto, observe que tienen que manejar todas las condiciones posibles aquí para el GET.

234
00:18:55,495 --> 00:18:57,500
Para la POST, por supuesto,

235
00:18:57,500 --> 00:19:01,895
la operación de publicación no es compatible con este extremo,

236
00:19:01,895 --> 00:19:04,060
por lo que diremos

237
00:19:08,900 --> 00:19:18,100
comentarios slash req.params.commentID.

238
00:19:18,950 --> 00:19:26,205
Por lo tanto, la operación POST no es compatible con este ID de comentario. ¿Y ahora qué hay de PUT?

239
00:19:26,205 --> 00:19:31,360
PUT es un caso más interesante aquí.

240
00:19:31,360 --> 00:19:33,550
Por lo tanto, de nuevo incluso para poner,

241
00:19:33,550 --> 00:19:40,205
tengo que manejar todas estas condiciones posibles,

242
00:19:40,205 --> 00:19:49,150
así que voy a mirar esto y decir, de acuerdo para esto,

243
00:19:49,370 --> 00:19:55,045
déjame copiar todo este código porque tenemos que manejar

244
00:19:55,045 --> 00:20:03,260
todas estas posibilidades y luego te diré exactamente cómo manejamos el caso PUT aquí.

245
00:20:03,260 --> 00:20:06,685
Entonces, en el caso de

246
00:20:06,685 --> 00:20:10,140
PUT, primero por supuesto tenemos que localizar la carnicería.

247
00:20:10,140 --> 00:20:13,600
Entonces dirán que los platos encuentran por Id req param Id,

248
00:20:13,600 --> 00:20:20,845
entonces si el plato existe y el comentario en sí existe,

249
00:20:20,845 --> 00:20:23,080
entonces sé que puedo actualizar el comentario.

250
00:20:23,080 --> 00:20:28,660
De lo contrario, estas dos condiciones obviamente tienen que ser atendidas,

251
00:20:28,660 --> 00:20:32,740
ese comentario no existe o el plato no existe.

252
00:20:32,740 --> 00:20:35,350
Estos dos ya están manejados por ese caso.

253
00:20:35,350 --> 00:20:38,190
Ahora, esta es la situación especial que tenemos.

254
00:20:38,190 --> 00:20:45,355
Entonces, si el plato existe y el comentario específico que estoy buscando también existe,

255
00:20:45,355 --> 00:20:50,300
entonces lo que sé es que en el cuerpo del mensaje,

256
00:20:50,300 --> 00:20:53,760
se especifica la actualización para el comentario.

257
00:20:53,760 --> 00:20:55,625
Así que necesito actualizar eso.

258
00:20:55,625 --> 00:21:00,760
Entonces, en algún lugar aquí hago modificaciones,

259
00:21:00,760 --> 00:21:02,910
hago un plato guardado aquí,

260
00:21:02,910 --> 00:21:10,110
así que voy a entrar y copiar un poco de este código desde aquí,

261
00:21:10,960 --> 00:21:17,680
por supuesto, esto no es lo correcto, pero solo necesito una parte del código desde allí,

262
00:21:17,680 --> 00:21:19,940
así que entraré en el PUT.

263
00:21:19,940 --> 00:21:23,270
Déjame pegarlo en su lugar aquí y

264
00:21:23,270 --> 00:21:27,340
luego te diré exactamente cómo van a manejar esto.

265
00:21:27,700 --> 00:21:31,200
Porque necesito que el plato guarde parte.

266
00:21:31,200 --> 00:21:35,950
Entonces, ¿cómo manejamos la actualización de un comentario específico?

267
00:21:35,950 --> 00:21:39,510
Así que para la actualización de un comentario específico,

268
00:21:39,510 --> 00:21:45,265
lo que sabemos es que este comentario necesita ser actualizado,

269
00:21:45,265 --> 00:21:49,900
por lo que sabemos que el plato existe y el comentario en sí existe.

270
00:21:49,900 --> 00:21:53,885
Quiero actualizar los campos de la actual.

271
00:21:53,885 --> 00:21:56,690
Ahora, si ya existe un comentario, entonces no quiero

272
00:21:56,690 --> 00:21:59,530
permitir que el usuario cambie el autor del comentario,

273
00:21:59,530 --> 00:22:00,890
el autor debe conservarlo.

274
00:22:00,890 --> 00:22:09,090
Los únicos dos campos que permitiría que el usuario actualice es la calificación.

275
00:22:09,090 --> 00:22:12,380
Entonces, dentro del cuerpo del mensaje PUT entrante,

276
00:22:12,380 --> 00:22:15,089
puedo incluir

277
00:22:15,089 --> 00:22:17,680
la calificación actualizada

278
00:22:21,830 --> 00:22:28,110
o el comentario actualizado.

279
00:22:28,110 --> 00:22:33,475
Estas son las únicas dos cosas que permitiré que el usuario cambie.

280
00:22:33,475 --> 00:22:40,190
Así que si el si la propiedad de calificación es cuerpo indirecto para llamar que

281
00:22:40,190 --> 00:22:47,940
el cuerpo contendrá la actualización que estamos tratando de hacerlo en este caso vamos a decir plato.

282
00:22:48,240 --> 00:22:51,460
Así que diremos comentarios de platos,

283
00:22:51,460 --> 00:22:54,000
así que déjame copiar esta parte.

284
00:22:54,000 --> 00:22:56,980
Comentario plato Id.

285
00:22:56,980 --> 00:23:02,770
Ahora bien, esta es una forma simple de manejar este problema aquí.

286
00:23:05,950 --> 00:23:11,525
Debido a que no hay una forma

287
00:23:11,525 --> 00:23:16,655
específica de actualizar un comentario específico que está en un subdocumento,

288
00:23:16,655 --> 00:23:19,330
no hay un método específico para hacerlo.

289
00:23:19,330 --> 00:23:24,950
Así que esta es la solución que encontré que parece funcionar para nosotros,

290
00:23:24,950 --> 00:23:32,820
así que diremos comentarios de plato req parámetro comentario calificación Id igual a req body.rating.

291
00:23:34,700 --> 00:23:37,640
Así que actualizaré la calificación.

292
00:23:37,640 --> 00:23:42,420
Del mismo modo, si el comentario existe allí,

293
00:23:42,420 --> 00:23:51,995
entonces diré req comment Id comment req body comment.

294
00:23:51,995 --> 00:23:57,655
Entonces, así es como voy a actualizar la calificación y el comentario,

295
00:23:57,655 --> 00:24:00,230
y una vez digo acerca de la calificación actualizada y el comentario,

296
00:24:00,230 --> 00:24:02,155
y van a guardar el plato,

297
00:24:02,155 --> 00:24:08,140
y luego una vez que guarde el plato, entonces voy a enviar de vuelta la respuesta.

298
00:24:08,140 --> 00:24:15,120
Por lo tanto, tenga en cuenta que esta es la única manera que encontré que es bastante

299
00:24:15,120 --> 00:24:22,785
fácil de actualizar un subdocumento incrustado dentro de un documento de Mangoose.

300
00:24:22,785 --> 00:24:28,520
No hay ninguna manera explícita que Mongoose admita para actualizar un documento incrustado.

301
00:24:28,520 --> 00:24:34,275
Así que esta es la solución que encontré que nos permite llevar a cabo esta operación.

302
00:24:34,275 --> 00:24:38,825
Ahora para la operación de eliminación.

303
00:24:38,825 --> 00:24:43,940
Para la operación de eliminación, estamos eliminando solo un

304
00:24:43,940 --> 00:24:48,880
comentario específico, así que tomaré esta información

305
00:24:48,880 --> 00:24:53,915
del eliminador para todos los comentarios

306
00:24:53,915 --> 00:24:55,880
y en lugar de eliminar todos los comentarios,

307
00:24:55,880 --> 00:24:58,190
solo voy a eliminar un comentario específico.

308
00:24:58,190 --> 00:25:03,095
Por lo tanto, déjame copiar eso de la eliminación.

309
00:25:03,095 --> 00:25:07,920
Déjame pegarlo aquí y luego actualizaremos esto.

310
00:25:07,920 --> 00:25:13,910
Por lo tanto, si estoy eliminando un comentario específico, entonces primero encontraré el plato.

311
00:25:13,910 --> 00:25:17,240
Si el plato no es nulo,

312
00:25:17,240 --> 00:25:21,480
recuerde que en esta situación tengo que manejar tanto el plato

313
00:25:21,480 --> 00:25:26,395
no siendo nulo como el comentario no es nulo.

314
00:25:26,395 --> 00:25:29,150
Por lo tanto, diré que si

315
00:25:32,890 --> 00:25:39,840
dish no es igual a null y dish comments id parámetro no es igual a null,

316
00:25:39,840 --> 00:25:44,335
entonces sé que tengo un comentario específico que quiero eliminar.

317
00:25:44,335 --> 00:25:45,850
No estoy eliminando todos los comentarios,

318
00:25:45,850 --> 00:25:49,770
solo estoy eliminando un comentario específico aquí.

319
00:25:49,770 --> 00:25:58,700
Entonces, diré que los comentarios de plato id y luego eliminaré el comentario específico aquí que

320
00:25:58,700 --> 00:26:07,780
es req.params.commentid y eliminaré

321
00:26:07,780 --> 00:26:14,565
ese comentario en particular y luego guardaré el plato actualizado y luego continuaré con eso.

322
00:26:14,565 --> 00:26:19,225
Ahora, la otra parte que necesito para manejar las dos situaciones.

323
00:26:19,225 --> 00:26:23,180
Por lo tanto, permítanme copiar esta parte si el plato no es igual a nulo y

324
00:26:23,180 --> 00:26:28,420
así sucesivamente y luego reemplace esto aquí.

325
00:26:28,420 --> 00:26:33,480
Entonces, si el plato es nulo, entonces enviaré el error diciendo que el plato no existe.

326
00:26:33,480 --> 00:26:37,640
Si el comentario es nulo, enviaré el error diciendo que el comentario no existe.

327
00:26:37,640 --> 00:26:39,520
Así que, eso es todo,

328
00:26:39,520 --> 00:26:41,770
esta es la actualización que estoy haciendo aquí.

329
00:26:41,770 --> 00:26:44,395
Para eliminar un comentario específico,

330
00:26:44,395 --> 00:26:47,670
primero me aseguraré de que el plato y el comentario

331
00:26:47,670 --> 00:26:52,040
existan, luego eliminaré el comentario específico y luego guardaré

332
00:26:52,040 --> 00:26:54,520
los cambios

333
00:26:54,520 --> 00:27:00,315
en el plato y luego continuaré con el manejo del resto de los casos, eso es todo.

334
00:27:00,315 --> 00:27:05,310
Vamos a guardar los cambios y luego ver cómo funciona esto. Al

335
00:27:05,310 --> 00:27:07,210
ir a la terminal,

336
00:27:07,210 --> 00:27:12,150
veo que el servidor MongoDB no está en funcionamiento, así que comencemos allí.

337
00:27:12,150 --> 00:27:14,000
Asegúrese, por supuesto, de

338
00:27:14,000 --> 00:27:16,075
que el servidor MongoDB está en funcionamiento,

339
00:27:16,075 --> 00:27:19,070
también vamos a iniciar nuestro servidor express.

340
00:27:19,890 --> 00:27:23,165
Una vez que su servidor express esté en funcionamiento,

341
00:27:23,165 --> 00:27:27,185
lo que haremos es ahora mirar específicamente

342
00:27:27,185 --> 00:27:32,420
los comentarios y luego realizar operaciones en los comentarios.

343
00:27:32,420 --> 00:27:36,320
Por lo tanto, vamos al Cartero y

344
00:27:36,320 --> 00:27:44,540
luego echa un vistazo a lo que tenemos en la base de datos y luego tratar de modificar los comentarios.

345
00:27:44,540 --> 00:27:47,760
Así que, aquí estoy en Cartero,

346
00:27:47,760 --> 00:27:53,265
así que permítanme primero conseguir los platos y ahora veo que los platos están todos vacíos.

347
00:27:53,265 --> 00:28:02,385
Así que déjame publicar un plato en la lista de platos, así que déjame publicar un plato.

348
00:28:02,385 --> 00:28:04,860
Recordemos que tenemos este plato ella,

349
00:28:04,860 --> 00:28:11,540
así que en mi cartero ya había hecho eso para el ejercicio anterior.

350
00:28:11,540 --> 00:28:16,160
Sólo voy a seleccionar eso y luego publicar ese plato y luego

351
00:28:16,160 --> 00:28:21,205
ves que ese plato en particular ha sido publicado aquí, abajo aquí abajo.

352
00:28:21,205 --> 00:28:25,060
Puedes ver que el plato ha sido creado justo allí.

353
00:28:25,060 --> 00:28:33,970
Permítanme ahora copiar esa identificación de plato en particular y luego voy a

354
00:28:33,970 --> 00:28:45,505
conseguir ese plato aquí.

355
00:28:45,505 --> 00:28:49,920
Así que, ves que ese plato en particular existe aquí.

356
00:28:49,920 --> 00:28:52,575
Primero, consigamos todos los comentarios.

357
00:28:52,575 --> 00:28:55,480
Por lo tanto, si hago un conseguir en los comentarios que se nota que

358
00:28:55,480 --> 00:28:58,370
todos los comentarios para ese plato en particular han sido devueltos.

359
00:28:58,370 --> 00:29:02,195
Podemos hacer el post y la eliminación también.

360
00:29:02,195 --> 00:29:05,865
Vamos a poner eso y obviamente no puedes hacer un puesto en la

361
00:29:05,865 --> 00:29:09,960
espalda, así que te das cuenta de que la operación de puesta no funciona en eso.

362
00:29:09,960 --> 00:29:13,110
Vamos a publicar un nuevo comentario.

363
00:29:13,110 --> 00:29:18,070
Así que para publicar un nuevo comentario vamos a entrar en el cuerpo,

364
00:29:18,380 --> 00:29:28,990
y luego déjame cortar todos estos y luego vamos a editar uno de

365
00:29:28,990 --> 00:29:31,130
los comentarios y luego

366
00:29:35,790 --> 00:29:40,045
tratar de publicar ese comentario.

367
00:29:40,045 --> 00:29:45,130
Por lo tanto, diremos calificación tres y luego

368
00:29:45,130 --> 00:29:56,110
diremos comentario de prueba, usuario de prueba.

369
00:29:56,110 --> 00:29:58,425
Vamos a publicar este comentario.

370
00:29:58,425 --> 00:30:00,190
Cuando publiques este comentario,

371
00:30:00,190 --> 00:30:05,920
ves que el plato de actualización ha sido devuelto aquí y ves que dentro de

372
00:30:05,920 --> 00:30:14,530
este plato ves que el nuevo comentario ha sido incluido allí.

373
00:30:14,530 --> 00:30:20,335
Así que, vamos a copiar todo esto.

374
00:30:20,335 --> 00:30:27,515
Ahora, trataremos de conseguir ese comentario en particular que acabamos de insertar.

375
00:30:27,515 --> 00:30:31,440
Para ese comentario en particular, esta es la identificación de ese comentario.

376
00:30:31,440 --> 00:30:35,180
Así que permítanme copiar la identificación de ese comentario específico.

377
00:30:35,180 --> 00:30:38,545
Volviendo a Postman,

378
00:30:38,545 --> 00:30:43,915
permítanme tratar de recuperar ese comentario específico haciendo una operación get.

379
00:30:43,915 --> 00:30:48,380
Allí ve que ese comentario en particular ha sido recuperado aquí.

380
00:30:48,380 --> 00:30:52,050
Ahora, si estás tratando de hacer una publicación sobre eso, eso no funcionará,

381
00:30:52,050 --> 00:30:56,445
así que obviamente ves que la operación de publicación no está permitida en eso.

382
00:30:56,445 --> 00:31:01,370
Vamos a hacer una operación de poner,

383
00:31:03,860 --> 00:31:06,385
en ese comentario en particular.

384
00:31:06,385 --> 00:31:10,010
Por lo tanto, si tuviera que poner operación en el cuerpo,

385
00:31:10,390 --> 00:31:18,285
voy a decir comentario de prueba actualizado.

386
00:31:18,285 --> 00:31:23,200
Por lo tanto, voy a actualizar el campo de comentarios de ese comentario.

387
00:31:23,200 --> 00:31:28,745
Si estás diciendo que lo pongas, verás que para el comentario específico,

388
00:31:28,745 --> 00:31:33,670
el comentario ahora se ha actualizado para reflejar el comentario de prueba actualizado.

389
00:31:33,670 --> 00:31:39,515
Por lo tanto, verá que la operación de poner en el campo de comentarios también funciona correctamente.

390
00:31:39,515 --> 00:31:42,820
Vamos a eliminar ese comentario,

391
00:31:42,820 --> 00:31:46,660
para que pueda eliminar el comentario y luego cuando elimine el comentario

392
00:31:46,660 --> 00:31:50,475
verá que ese comentario ha desaparecido de la lista de comentarios.

393
00:31:50,475 --> 00:31:53,915
Por lo tanto, verá que la operación de eliminación también funciona.

394
00:31:53,915 --> 00:31:55,970
Vamos a eliminar todos los comentarios.

395
00:31:55,970 --> 00:32:00,595
Así que voy a entrar y borrar todos los comentarios.

396
00:32:00,595 --> 00:32:04,650
A continuación, verá que todos los comentarios se han eliminado,

397
00:32:04,650 --> 00:32:09,380
y así verá que el área de comentarios ahora está vacía.

398
00:32:09,380 --> 00:32:13,050
Por lo tanto, ahora puede verlos todas

399
00:32:13,050 --> 00:32:21,064
las operaciones de get, put, post

400
00:32:21,064 --> 00:32:25,455
y delete en los platos, dishid/comments y los

401
00:32:25,455 --> 00:32:29,710
puntos finales de la API REST funcionan como se esperaba.

402
00:32:29,710 --> 00:32:32,670
Así que con esto completamos este ejercicio.

403
00:32:32,670 --> 00:32:38,365
Así, en este ejercicio hemos completado la implementación de los platos de barra, el

404
00:32:38,365 --> 00:32:42,395
punto final de la API REST y soportado hasta

405
00:32:42,395 --> 00:32:47,070
permitirnos manipular un solo plato,

406
00:32:47,070 --> 00:32:48,730
la colección de platos,

407
00:32:48,730 --> 00:32:52,165
un solo comentario y también la colección de comentarios.

408
00:32:52,165 --> 00:32:56,930
Este es un buen momento para que hagas una confirmación de git con el mensaje,

409
00:32:56,930 --> 00:33:02,600
express, API REST con Mangoose parte dos.