1
00:00:03,910 --> 00:00:09,095
Es hora de empezar en la cuarta y última asignación de este curso.

2
00:00:09,095 --> 00:00:12,170
He diseñado esta tarea para que sea una consolidación

3
00:00:12,170 --> 00:00:15,610
de todo lo que han aprendido en este curso.

4
00:00:15,610 --> 00:00:21,990
Por lo tanto, esta asignación implicará enrutamiento usando el enrutador express.

5
00:00:21,990 --> 00:00:26,340
Implicará el diseño de esquemas en el modelo,

6
00:00:26,340 --> 00:00:29,420
para nuestro MongoDB y Mangoose,

7
00:00:29,420 --> 00:00:33,531
y luego también verá brevemente la autenticación del usuario.

8
00:00:33,531 --> 00:00:36,420
¿ Qué hacemos exactamente en esta tarea?

9
00:00:36,420 --> 00:00:41,600
Esta asignación se basa en la capacidad de un usuario para

10
00:00:41,600 --> 00:00:49,510
guardar y recuperar una lista de platos como sus platos favoritos en el lado del servidor.

11
00:00:49,510 --> 00:00:53,105
Si habías tomado los cursos anteriores de esta especialización,

12
00:00:53,105 --> 00:00:58,275
específicamente los cursos de desarrollo de aplicaciones móviles híbridas,

13
00:00:58,275 --> 00:01:00,675
ya sea de script iónico o nativo,

14
00:01:00,675 --> 00:01:06,720
has visto que hemos diseñado las apps para tener la capacidad de permitir al usuario

15
00:01:06,720 --> 00:01:10,355
guardar platos en la lista de sus favoritos platos

16
00:01:10,355 --> 00:01:14,480
y también recuperar platos de esa lista de sus platos favoritos.

17
00:01:14,480 --> 00:01:17,840
Cuando implementamos eso en los cursos anteriores,

18
00:01:17,840 --> 00:01:24,085
lo habíamos implementado usando almacenamiento local en el dispositivo específico.

19
00:01:24,085 --> 00:01:26,330
En esta asignación, ampliará

20
00:01:26,330 --> 00:01:30,308
el lado del servidor para poder admitir exactamente eso.

21
00:01:30,308 --> 00:01:34,940
De esta forma, el usuario puede guardar su lista de platos favoritos en

22
00:01:34,940 --> 00:01:37,805
el lado del servidor y acceder a esta lista desde

23
00:01:37,805 --> 00:01:41,950
cualquier dispositivo desde el que iniciará sesión en su servidor.

24
00:01:41,950 --> 00:01:49,140
Lo que esto significa es que necesitamos diseñar una nueva ruta para nuestro servidor,

25
00:01:49,140 --> 00:01:52,615
que llamaremos como la ruta /favorites.

26
00:01:52,615 --> 00:01:59,314
En esta ruta, tendremos que diseñar el router express para apoyar las

27
00:01:59,314 --> 00:02:03,515
operaciones de get, post y delete en esta ruta y

28
00:02:03,515 --> 00:02:08,495
también diseñar el esquema para almacenar los platos favoritos

29
00:02:08,495 --> 00:02:13,343
y el modelo correspondiente de Mangosta y

30
00:02:13,343 --> 00:02:19,820
conectar los dos juntos para que la información pueda ser guardada y recuperado de MongoDB.

31
00:02:19,820 --> 00:02:27,590
También utilizaremos la población de mangosta con el fin de extraer la información

32
00:02:27,590 --> 00:02:32,000
del modelo de usuario y del modelo de platos cuando

33
00:02:32,000 --> 00:02:37,105
armemos esa lista de platos favoritos para nuestro usuario.

34
00:02:37,105 --> 00:02:41,355
La información de platos favoritos que almacene no

35
00:02:41,355 --> 00:02:46,355
contendrá ni la información del usuario ni la información del plato.

36
00:02:46,355 --> 00:02:53,000
En su lugar, contendrá punteros a los documentos para el documento de plato y para

37
00:02:53,000 --> 00:02:56,660
el documento de usuario y luego publicaremos esta información

38
00:02:56,660 --> 00:03:03,155
cuando estemos enviando esta información en respuesta a una solicitud de get.

39
00:03:03,155 --> 00:03:05,495
Veamos cómo implementamos

40
00:03:05,495 --> 00:03:13,135
esta tarea final y también las diversas tareas en esta asignación final.

41
00:03:13,135 --> 00:03:17,370
Para ayudarle a entender lo que se requiere en

42
00:03:17,370 --> 00:03:21,330
la asignación final o lo que va a implementar en la asignación final,

43
00:03:21,330 --> 00:03:26,835
permítanme demostrar lo que se espera que haga su servidor al final de esta asignación,

44
00:03:26,835 --> 00:03:31,540
y luego enumeraré las tres tareas que necesita realizar en este asignación.

45
00:03:31,540 --> 00:03:35,460
Para empezar, necesitamos un conjunto de platos ya en

46
00:03:35,460 --> 00:03:40,250
el lado del servidor para que el usuario pueda marcar algunos de ellos como sus platos favoritos.

47
00:03:40,250 --> 00:03:47,805
He seguido adelante y añadido en cuatro platos a mi lista de platos en el lado del servidor.

48
00:03:47,805 --> 00:03:50,065
Ya sabes cómo hacer esto.

49
00:03:50,065 --> 00:03:52,725
Usted tiene que iniciar sesión como administrador y luego publicar

50
00:03:52,725 --> 00:03:56,670
esta información de plato en el lado del servidor uno por uno.

51
00:03:56,670 --> 00:04:01,590
Para permitirle obtener la información de cada uno de estos platos,

52
00:04:01,590 --> 00:04:05,405
ya le he proporcionado el archivo db.json que contiene

53
00:04:05,405 --> 00:04:11,400
los documentos JSON correspondientes a cada uno de estos platos en los recursos de asignación.

54
00:04:11,400 --> 00:04:14,670
Puede abrir eso, cortar y pegar información desde allí y luego

55
00:04:14,670 --> 00:04:19,576
crear una lista de platos en el lado del servidor.

56
00:04:19,576 --> 00:04:22,980
Aquí, verá que ya he realizado la operación get en el

57
00:04:22,980 --> 00:04:26,940
localhost: 3000/platos y luego

58
00:04:26,940 --> 00:04:31,140
verá que ya he obtenido la lista de platos aquí.

59
00:04:31,140 --> 00:04:38,570
Lo que es importante para nosotros tener en cuenta es que cada plato tendrá su propia identificación de plato aquí.

60
00:04:38,570 --> 00:04:42,384
Cuando necesite marcar cualquier plato como su favorito,

61
00:04:42,384 --> 00:04:46,470
necesita acceso a la identificación del plato para cada uno de estos platos.

62
00:04:46,470 --> 00:04:51,030
Puede copiar estos cuatro ID de plato y luego guardarlos para que cuando

63
00:04:51,030 --> 00:04:56,094
realice las operaciones para agregar estos platos a la lista de platos,

64
00:04:56,094 --> 00:05:00,085
entonces usted será capaz de usar este ID de plato.

65
00:05:00,085 --> 00:05:02,730
Así que voy a copiar estos cuatro identificadores de plato y luego

66
00:05:02,730 --> 00:05:05,820
guardarlos en un documento de texto para que pueda hacer uso de ellos.

67
00:05:05,820 --> 00:05:09,325
Antes de poder agregar platos a mi lista de platos,

68
00:05:09,325 --> 00:05:12,347
obviamente necesito iniciar sesión como usuario.

69
00:05:12,347 --> 00:05:16,370
Permítanme seguir adelante e iniciar sesión como uno de los usuarios.

70
00:05:16,370 --> 00:05:25,245
Para hacer eso, déjame hacer una publicación en el localhost: 3000/users/login.

71
00:05:25,245 --> 00:05:28,530
Y en el cuerpo del mensaje,

72
00:05:28,530 --> 00:05:35,940
permítanme escribir uno de los usuarios registrados.

73
00:05:35,940 --> 00:05:42,375
No quiero iniciar sesión como administrador, sino como uno de los otros usuarios normales.

74
00:05:42,375 --> 00:05:47,442
Así que déjame hacer este post a https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Ahora todas estas operaciones,

76
00:05:48,890 --> 00:05:55,200
esto es mejor hacerlo en el extremo HTTPS en lugar del extremo HTTP.

77
00:05:55,200 --> 00:06:01,920
Haremos una publicación en este extremo e iniciaremos sesión en nuestro servicio

78
00:06:01,920 --> 00:06:05,920
, y en respuesta, debería poder obtener el token web JSON.

79
00:06:05,920 --> 00:06:11,190
Así que hagamos una copia de este token web JSON porque necesitaremos esto para

80
00:06:11,190 --> 00:06:16,905
realizar cualquiera de las operaciones para agregar platos a nuestra lista de favoritos.

81
00:06:16,905 --> 00:06:22,628
Permítanme copiar este token y guardarlo en mi documento de texto.

82
00:06:22,628 --> 00:06:27,935
Ahora, ¿cómo agrego un plato a mi lista de favoritos?

83
00:06:27,935 --> 00:06:33,450
Para ello, el primer paso es que tenemos que

84
00:06:33,450 --> 00:06:40,355
acceder al endpoint /favorites.

85
00:06:40,355 --> 00:06:45,435
Si quieres agregar un plato específico a la lista de favoritos,

86
00:06:45,435 --> 00:06:52,605
solo decimos /favorites y luego agregamos el ID del plato a la URL aquí.

87
00:06:52,605 --> 00:06:57,970
Déjame pegar en un ID de plato que quiero agregar a mi lista de favoritos.

88
00:06:57,970 --> 00:07:03,130
Aquí, he pegado en mi ID de plato a la lista de favoritos.

89
00:07:03,130 --> 00:07:08,025
El cuerpo de este mensaje de host

90
00:07:08,025 --> 00:07:13,590
no contendrá nada porque todo lo que necesito ya está en la URL.

91
00:07:13,590 --> 00:07:16,043
Y para el encabezado,

92
00:07:16,043 --> 00:07:18,984
necesito configurar el encabezado de autorización,

93
00:07:18,984 --> 00:07:21,371
y en el encabezado de autorización,

94
00:07:21,371 --> 00:07:24,380
necesito el token.

95
00:07:24,380 --> 00:07:29,487
Así que déjame copiar el token aquí y luego en el encabezado de autorización,

96
00:07:29,487 --> 00:07:34,750
digamos portador, y pegarlo en el encabezado de autorización.

97
00:07:34,750 --> 00:07:39,853
También puede hacer lo mismo para obtener el token.

98
00:07:39,853 --> 00:07:46,925
También puede hacer el inicio de sesión a través de Facebook y luego obtener el token web JSON.

99
00:07:46,925 --> 00:07:50,960
He ilustrado para obtener el token web JSON usando

100
00:07:50,960 --> 00:07:55,655
la autenticación local estándar usando el nombre de usuario y la contraseña,

101
00:07:55,655 --> 00:07:58,940
pero no importa de qué manera obtuviste el token web JSON.

102
00:07:58,940 --> 00:08:01,160
Siempre y cuando tenga el token web JSON,

103
00:08:01,160 --> 00:08:04,376
debería poder realizar todas estas operaciones.

104
00:08:04,376 --> 00:08:10,280
Permítanme realizar la operación de publicación en este punto final y recordar que este

105
00:08:10,280 --> 00:08:16,570
es el ID de plato para el plato específico que quiero agregar a mi lista de favoritos.

106
00:08:16,570 --> 00:08:19,895
Cuando publique en la lista de favoritos,

107
00:08:19,895 --> 00:08:29,135
verá que mi servidor responderá con este documento aquí en el cuerpo de respuesta.

108
00:08:29,135 --> 00:08:33,328
Ahora, examinemos este documento para ver qué contiene exactamente.

109
00:08:33,328 --> 00:08:36,680
Este documento, como puede ver, contiene un ID,

110
00:08:36,680 --> 00:08:39,511
pero obviamente debido a que se trata de un documento JSON,

111
00:08:39,511 --> 00:08:43,115
además contiene un

112
00:08:43,115 --> 00:08:46,335
campo aquí llamado usuario.

113
00:08:46,335 --> 00:08:48,425
Ahora, ¿qué almacena este campo de usuario?

114
00:08:48,425 --> 00:08:53,848
Este campo de usuario es el ID de objeto del usuario

115
00:08:53,848 --> 00:09:00,620
correspondiente al que es esta lista particular de favoritos.

116
00:09:00,620 --> 00:09:02,960
Y mira los platos.

117
00:09:02,960 --> 00:09:10,120
Los platos son una variedad y es una variedad de identificadores de platos.

118
00:09:10,120 --> 00:09:15,950
Y en este caso, acabo de agregar el primer plato a mi lista de favoritos. Por

119
00:09:15,950 --> 00:09:22,690
lo tanto, es por eso que solo tengo un plato en la variedad de platos en mi lista de favoritos.

120
00:09:22,690 --> 00:09:30,140
Por lo tanto, esto debería sugerirle inmediatamente cómo diseñar el esquema para sus favoritos.

121
00:09:30,140 --> 00:09:34,760
Por lo tanto, los platos contienen los ID de objeto de cada uno de los platos,

122
00:09:34,760 --> 00:09:39,124
y el usuario contiene el ID de objeto correspondiente al usuario.

123
00:09:39,124 --> 00:09:42,335
Usted ya ha visto cómo uso

124
00:09:42,335 --> 00:09:49,800
la información para hacer la población de la información cuando hago una operación get.

125
00:09:49,800 --> 00:09:52,690
Ya lo hemos hecho con comentarios.

126
00:09:52,690 --> 00:09:57,980
Por lo tanto, eso debería darle una gran pista sobre cómo diseñaría el esquema que contiene

127
00:09:57,980 --> 00:10:04,855
al usuario y la variedad de platos en mi lista de platos aquí.

128
00:10:04,855 --> 00:10:07,330
Ahora, hemos hecho el post sobre esto.

129
00:10:07,330 --> 00:10:09,500
Vamos a conseguir la lista de favoritos.

130
00:10:09,500 --> 00:10:11,750
Entonces, para obtener la lista de favoritos,

131
00:10:11,750 --> 00:10:14,405
necesito realizar una operación get.

132
00:10:14,405 --> 00:10:16,561
Ahora, para la operación get,

133
00:10:16,561 --> 00:10:21,950
obviamente necesito también tener la información de autorización aquí porque

134
00:10:21,950 --> 00:10:27,635
desea que un usuario pueda recuperar solo su lista de favoritos,

135
00:10:27,635 --> 00:10:32,905
y ningún otro usuario puede recuperar la lista de favoritos para un usuario diferente.

136
00:10:32,905 --> 00:10:34,590
Por lo tanto, esto es muy importante.

137
00:10:34,590 --> 00:10:37,640
Por lo tanto, esto le sugiere que necesita

138
00:10:37,640 --> 00:10:41,620
verificar la autenticidad del usuario incluso para la operación get.

139
00:10:41,620 --> 00:10:45,185
Ahora, ¿cómo la post-operación

140
00:10:45,185 --> 00:10:49,760
obtiene automáticamente este ID de objeto correspondiente al usuario?

141
00:10:49,760 --> 00:10:55,175
Recuerde que cuando incluya el encabezado de autorización aquí,

142
00:10:55,175 --> 00:10:57,457
desde el encabezado de autorización,

143
00:10:57,457 --> 00:11:01,055
por la forma en que realice la autorización del usuario,

144
00:11:01,055 --> 00:11:06,240
dirija esas propiedades de usuario ya cargadas en el objeto de solicitud.

145
00:11:06,240 --> 00:11:10,270
Y ahí es donde obtendrá acceso al ID de objeto del usuario.

146
00:11:10,270 --> 00:11:13,914
Por lo tanto, una pista más sobre cómo va a llenar esta información.

147
00:11:13,914 --> 00:11:16,655
Por lo tanto, es por eso que observe que cuando

148
00:11:16,655 --> 00:11:19,625
realicé la publicación, nunca especificé

149
00:11:19,625 --> 00:11:23,825
el usuario porque la información del usuario debe

150
00:11:23,825 --> 00:11:28,484
derivarse automáticamente de lo que hemos proporcionado aquí en el encabezado de autorización.

151
00:11:28,484 --> 00:11:32,565
Entonces, una pista más sobre cómo irías a implementar esto. Por

152
00:11:32,565 --> 00:11:36,830
lo tanto, por eso dije que esta tarea es una consolidación

153
00:11:36,830 --> 00:11:41,835
de todos los temas que han explorado en este curso.

154
00:11:41,835 --> 00:11:47,200
Ahora, yo no apoyo una operación de obtener en un ID plato específico.

155
00:11:47,200 --> 00:11:50,610
No tiene sentido apoyar eso en los favoritos,

156
00:11:50,610 --> 00:11:53,345
en un ID de plato específico.

157
00:11:53,345 --> 00:11:58,595
En su lugar, podemos realizar una operación get en el host local 3443/favoritos.

158
00:11:58,595 --> 00:12:01,670
Y luego realizamos la operación de obtención.

159
00:12:01,670 --> 00:12:09,398
Notará inmediatamente que el documento que se le devuelve contiene

160
00:12:09,398 --> 00:12:17,715
la información del usuario ya rellenada por la operación get aquí.

161
00:12:17,715 --> 00:12:18,950
Por lo tanto, la información del usuario.

162
00:12:18,950 --> 00:12:22,112
Entonces, en lugar del ID de

163
00:12:22,112 --> 00:12:26,445
usuario allí, la información del usuario ya está presente allí.

164
00:12:26,445 --> 00:12:28,730
Esto se hace a través de la población de Mongo.

165
00:12:28,730 --> 00:12:34,435
Entonces, esa es otra gran pista sobre cómo se supone que debes implementar la operación get.

166
00:12:34,435 --> 00:12:37,130
No solo se rellena la información del usuario.

167
00:12:37,130 --> 00:12:39,626
Ahora, ¿por qué querría que se rellenara la información del usuario?

168
00:12:39,626 --> 00:12:44,540
Porque eso puede ser útil cuando estoy mostrando información.

169
00:12:44,540 --> 00:12:46,350
Esto puede no ser necesario,

170
00:12:46,350 --> 00:12:49,445
pero lo estoy haciendo solo por el bien de la integridad

171
00:12:49,445 --> 00:12:53,825
porque si está recuperando la lista de favoritos para un usuario en particular,

172
00:12:53,825 --> 00:12:56,120
automáticamente sabe quién es el usuario,

173
00:12:56,120 --> 00:12:59,083
y ese usuario en particular está iniciando sesión de todos modos.

174
00:12:59,083 --> 00:13:01,385
Pero en caso de que desee la información del usuario,

175
00:13:01,385 --> 00:13:06,278
puede realizar esta operación para obtener la información de ese usuario.

176
00:13:06,278 --> 00:13:10,720
Por lo tanto, sólo para ilustrar que la población de Mongo puede ser utilizada,

177
00:13:10,720 --> 00:13:16,515
he ilustrado no sólo que en la lista de platos aquí,

178
00:13:16,515 --> 00:13:22,820
la información sobre cada plato ya está poblada en esta matriz.

179
00:13:22,820 --> 00:13:24,907
Por lo tanto, si tiene un montón de platos,

180
00:13:24,907 --> 00:13:30,385
la información de cada uno de esos platos debe rellenarse en esta matriz.

181
00:13:30,385 --> 00:13:34,670
Por lo tanto, este es otro uso de la población de Mongo

182
00:13:34,670 --> 00:13:38,555
que usted está viendo para llenar la información de los platos.

183
00:13:38,555 --> 00:13:44,014
Solo por la forma en que configuras el esquema para tus favoritos,

184
00:13:44,014 --> 00:13:47,840
esto debería ser automáticamente posible para ti usando

185
00:13:47,840 --> 00:13:52,010
solo el relleno de puntos en la lista de platos aquí.

186
00:13:52,010 --> 00:13:54,103
Así que, esa es la segunda parte.

187
00:13:54,103 --> 00:13:59,213
Ahora que somos capaces de recuperar el método de obtener platos,

188
00:13:59,213 --> 00:14:03,590
déjame mostrarte cómo puedes realizar una operación posterior donde puedes

189
00:14:03,590 --> 00:14:08,750
agregar un montón de platos a tu lista de favoritos.

190
00:14:08,750 --> 00:14:11,145
Ahora, volviendo a este post,

191
00:14:11,145 --> 00:14:18,145
si necesita agregar no solo uno sino un conjunto de platos a su lista de favoritos,

192
00:14:18,145 --> 00:14:19,850
ahora ¿por qué querría esto?

193
00:14:19,850 --> 00:14:24,980
Tal vez en el lado del cliente puede tener un botón que al

194
00:14:24,980 --> 00:14:31,255
hacer clic le permitirá marcar un conjunto de platos de la lista de platos,

195
00:14:31,255 --> 00:14:34,710
y luego añadirlos de una sola vez en su lista de favoritos.

196
00:14:34,710 --> 00:14:37,390
Por lo tanto, para apoyar ese tipo de operación,

197
00:14:37,390 --> 00:14:42,295
es posible que desee permitir que se realice una publicación en los favoritos de barra.

198
00:14:42,295 --> 00:14:45,641
Ahora, cuando la publicación se realiza en los favoritos de barra, de nuevo,

199
00:14:45,641 --> 00:14:48,959
seguirá necesitando el encabezado de autorización.

200
00:14:48,959 --> 00:14:51,460
Pero en el cuerpo del mensaje,

201
00:14:51,460 --> 00:14:57,493
vamos a almacenar la lista de platos como una matriz de este formato.

202
00:14:57,493 --> 00:15:01,490
Entonces, este es un documento JSON aquí,

203
00:15:01,490 --> 00:15:04,340
así que déjame asegurarme de que en mi encabezado,

204
00:15:04,340 --> 00:15:08,107
el tipo de contenido ya esté presente allí.

205
00:15:08,107 --> 00:15:14,545
Ahora, este documento

206
00:15:14,545 --> 00:15:18,735
contendrá una variedad de platos como este.

207
00:15:18,735 --> 00:15:22,700
Por lo tanto, cada plato se identificará

208
00:15:22,700 --> 00:15:29,860
diciendo subrayado ID colon,

209
00:15:29,860 --> 00:15:34,835
y luego aquí tendrán la identificación del plato,

210
00:15:34,835 --> 00:15:39,760
por lo que esto no sería más que una variedad de platos.

211
00:15:39,760 --> 00:15:46,630
Por lo tanto, permítanme añadir dos platos a mi lista de favoritos aquí sólo para ilustrar el punto.

212
00:15:46,630 --> 00:15:51,726
Así que, déjame pegar las identificaciones de un par de platos en esto.

213
00:15:51,726 --> 00:15:56,823
Por lo tanto, cuando realiza una publicación en el host local 3443/favoritos,

214
00:15:56,823 --> 00:16:02,295
así es como componer el cuerpo del mensaje de publicación aquí.

215
00:16:02,295 --> 00:16:07,497
Por lo tanto, cada plato que desee agregar se incluirá en este formato aquí.

216
00:16:07,497 --> 00:16:09,670
Ahora, cuando los incluya en este formato,

217
00:16:09,670 --> 00:16:12,425
y luego publique

218
00:16:12,425 --> 00:16:20,161
en ese lado del servidor, el servidor a cambio enviará de vuelta la lista actualizada de favoritos para usted.

219
00:16:20,161 --> 00:16:23,395
Por lo tanto, cuando reciba la lista actualizada de favoritos desde el lado del servidor,

220
00:16:23,395 --> 00:16:26,300
verá que la información del usuario ya está allí,

221
00:16:26,300 --> 00:16:34,685
pero observe cómo los platos favoritos se almacenan en esta matriz de ID de objetos de plato.

222
00:16:34,685 --> 00:16:38,320
Entonces, el primero que ya habíamos agregado en la operación anterior.

223
00:16:38,320 --> 00:16:39,485
Así que los dos restantes,

224
00:16:39,485 --> 00:16:43,990
acabamos de agregar a la lista de nuestros favoritos.

225
00:16:43,990 --> 00:16:47,545
Por lo tanto, esos dos ID de objeto también se agregan a

226
00:16:47,545 --> 00:16:53,110
mi matriz de platos en mi documento favorito aquí.

227
00:16:53,110 --> 00:16:56,050
Así que, ahí lo tienes. Entonces, así es como se supone que debes realizar

228
00:16:56,050 --> 00:17:02,763
la publicación de favoritos en el punto final de esta manera.

229
00:17:02,763 --> 00:17:05,340
Ahora, vamos a realizar de nuevo una operación get en

230
00:17:05,340 --> 00:17:10,160
los favoritos sólo para ver cuáles son las características de la operación get para nosotros.

231
00:17:10,160 --> 00:17:12,600
Así que cuando realizamos la operación GET,

232
00:17:12,600 --> 00:17:21,345
inmediatamente notará que en el documento de devolución de favoritos,

233
00:17:21,345 --> 00:17:23,640
tiene la información del usuario allí,

234
00:17:23,640 --> 00:17:25,065
y luego abajo aquí,

235
00:17:25,065 --> 00:17:29,820
los platos no son más que una variedad de documentos Json aquí,

236
00:17:29,820 --> 00:17:32,670
cada uno correspondiente a un plato.

237
00:17:32,670 --> 00:17:35,010
Ahora esto es automáticamente cuidado por la

238
00:17:35,010 --> 00:17:38,360
población de mangosta que hemos hecho en el lado del servidor.

239
00:17:38,360 --> 00:17:44,525
Por lo tanto, toda esta información debe rellenarse automáticamente en el lado del servidor.

240
00:17:44,525 --> 00:17:50,430
Así es como funcionan sus operaciones de publicación en los dos puntos finales.

241
00:17:50,430 --> 00:17:56,395
Ahora déjame mostrarte cómo realizarías una operación DELETE.

242
00:17:56,395 --> 00:18:00,735
Ahora para eliminar un plato específico.

243
00:18:00,735 --> 00:18:08,193
Así que permítanme realizar una operación de eliminación en un extremo específico.

244
00:18:08,193 --> 00:18:13,095
Así que volveremos a este punto final,

245
00:18:13,095 --> 00:18:16,470
y luego permítanme copiar uno de estos,

246
00:18:16,470 --> 00:18:18,985
y luego eliminaré uno de los platos.

247
00:18:18,985 --> 00:18:22,585
Así que para realizar la operación de eliminación en uno

248
00:18:22,585 --> 00:18:23,750
de los platos, por supuesto, como ves,

249
00:18:23,750 --> 00:18:26,453
todavía no necesitamos el cuerpo,

250
00:18:26,453 --> 00:18:29,485
y no necesitamos el contenido aquí.

251
00:18:29,485 --> 00:18:35,580
Todo lo que tenemos que hacer es realizar una operación de eliminación en este extremo.

252
00:18:35,580 --> 00:18:43,125
Así que aquí ves que estoy haciendo localhost: 3443/favorites/ y luego el ID del plato.

253
00:18:43,125 --> 00:18:46,231
Y luego déjame publicar esto.

254
00:18:46,231 --> 00:18:51,760
Así que cuando elimino un plato específico de mi lista de favoritos,

255
00:18:51,760 --> 00:18:53,695
inmediatamente nota que

256
00:18:53,695 --> 00:19:01,555
mi lista actualizada de favoritos se envía de vuelta al lado del cliente por el servidor.

257
00:19:01,555 --> 00:19:03,010
Así que tienes al usuario aquí,

258
00:19:03,010 --> 00:19:06,220
pero ten en cuenta que en la matriz de platos solo tengo dos platos ahora.

259
00:19:06,220 --> 00:19:11,105
El que acabo de borrar ha desaparecido de esa lista de platos.

260
00:19:11,105 --> 00:19:12,820
Así que si usted realiza un GET ahora,

261
00:19:12,820 --> 00:19:18,265
su matriz de platos será continuamente a los platos allí dentro.

262
00:19:18,265 --> 00:19:24,635
Ahora, supongamos que realizo un DELETE en los favoritos aquí.

263
00:19:24,635 --> 00:19:30,565
Entonces, si realizo DELETE en el extremo de favoritos directamente,

264
00:19:30,565 --> 00:19:34,540
entonces lo que va a hacer es eliminar todos mis favoritos y

265
00:19:34,540 --> 00:19:39,096
también eliminar mi documento de favoritos por completo desde el lado del servidor.

266
00:19:39,096 --> 00:19:42,250
Así que permítanme realizar esa operación de eliminación en el lado del servidor,

267
00:19:42,250 --> 00:19:47,000
y luego devolverá el hecho de que ha eliminado este documento en particular,

268
00:19:47,000 --> 00:19:49,675
por lo que solo devuelve este documento de todos modos.

269
00:19:49,675 --> 00:19:54,670
Pero ahora si realizo una operación GET en mi lista de favoritos,

270
00:19:54,670 --> 00:19:57,580
recuperaré un nulo allí.

271
00:19:57,580 --> 00:20:00,880
Significa que no tengo este documento en el lado del servidor.

272
00:20:00,880 --> 00:20:03,800
Entonces, el documento de favoritos se ha ido por completo,

273
00:20:03,800 --> 00:20:09,352
cuando realizo la operación DELETE en la columna de host local tres de los favoritos anteriormente barra diagonal.

274
00:20:09,352 --> 00:20:12,805
Ahora de nuevo, cuando añada un nuevo plato a mi lista de

275
00:20:12,805 --> 00:20:16,580
favoritos, mi documento de favoritos se configurará de nuevo.

276
00:20:16,580 --> 00:20:21,880
Eso está perfectamente bien para que operemos.

277
00:20:21,880 --> 00:20:26,440
Así que con esta demostración le he mostrado

278
00:20:26,440 --> 00:20:32,680
todas las diversas operaciones que necesita realizar en su lado del servidor.

279
00:20:32,680 --> 00:20:36,670
Todas las diversas operaciones en los distintos extremos de ruta

280
00:20:36,670 --> 00:20:40,754
que necesita realizar o implementar en el lado del servidor.

281
00:20:40,754 --> 00:20:42,265
Ahora que ha visto

282
00:20:42,265 --> 00:20:47,720
todas las diversas operaciones que el lado del servidor debe admitir en los favoritos de barra,

283
00:20:47,720 --> 00:20:48,895
y los favoritos de barra,

284
00:20:48,895 --> 00:20:50,995
puntos finales de ID de plato diagonal,

285
00:20:50,995 --> 00:20:56,033
permítanme enumerar las tres tareas que necesita completar en esta asignación.

286
00:20:56,033 --> 00:21:03,340
La primera tarea, por supuesto, es implementar el esquema y el modelo favoritos.

287
00:21:03,340 --> 00:21:09,995
Esto lo implementará en la carpeta de modelos en un archivo llamado NodeJS favorito.

288
00:21:09,995 --> 00:21:12,460
Allí implementará el esquema favorito.

289
00:21:12,460 --> 00:21:13,952
Recuerde que el esquema favorito almacenará

290
00:21:13,952 --> 00:21:19,720
la referencia al Id. de objeto de documento del usuario

291
00:21:19,720 --> 00:21:26,212
y una matriz de Id. de objeto de documento de platos.

292
00:21:26,212 --> 00:21:29,440
Esa es la gran pista sobre cómo se supone que debe

293
00:21:29,440 --> 00:21:33,355
diseñar el esquema y el modelo para sus favoritos.

294
00:21:33,355 --> 00:21:39,190
La segunda tarea de la asignación es implementar las

295
00:21:39,190 --> 00:21:46,555
operaciones GET, POST y DELETE en el extremo de favoritos de barra diagonal.

296
00:21:46,555 --> 00:21:49,245
GET le dará toda la lista de favoritos,

297
00:21:49,245 --> 00:21:52,225
rellenado automáticamente por el poblado de Mongo,

298
00:21:52,225 --> 00:21:58,360
el POST debe contener una lista de platos como se especifica

299
00:21:58,360 --> 00:22:04,425
en el formato que acabo de demostrar a usted en el cuerpo del mensaje POST.

300
00:22:04,425 --> 00:22:08,695
Y así un montón de platos se agregarán a su lista de favoritos,

301
00:22:08,695 --> 00:22:11,800
y la operación DELETE en el extremo de favoritos barra

302
00:22:11,800 --> 00:22:16,215
eliminará su documento de favoritos por completo desde el lado del servidor.

303
00:22:16,215 --> 00:22:22,225
Ahora, si realiza una operación POST en el ID de plato de barra diagonal favorito,

304
00:22:22,225 --> 00:22:27,405
entonces el plato en particular se agregará a su lista de favoritos.

305
00:22:27,405 --> 00:22:29,635
Si su documento favorito no existe,

306
00:22:29,635 --> 00:22:32,455
obviamente necesita crear ese documento favorito.

307
00:22:32,455 --> 00:22:36,250
Entonces eso también es parte de esa operación POST.

308
00:22:36,250 --> 00:22:39,760
Así que si en algún momento encuentra que el documento favorito no existe,

309
00:22:39,760 --> 00:22:41,770
primero debe crear el documento favorito y

310
00:22:41,770 --> 00:22:44,550
luego agregar este plato al documento favorito.

311
00:22:44,550 --> 00:22:47,155
Por lo tanto, este es un punto importante a tener en cuenta también.

312
00:22:47,155 --> 00:22:51,305
Cuando realiza una POST en el extremo de favoritos de barra diagonal,

313
00:22:51,305 --> 00:22:53,290
si el documento favorito no existe,

314
00:22:53,290 --> 00:22:58,150
debe crear un documento favorito y, a continuación, agregar los platos al documento favorito.

315
00:22:58,150 --> 00:22:59,410
Si ya existe

316
00:22:59,410 --> 00:23:02,765
, solo actualiza ese documento favorito.

317
00:23:02,765 --> 00:23:08,480
Entonces, esta es una pista más sobre cómo se supone que debe implementar las operaciones POST.

318
00:23:08,480 --> 00:23:13,735
Si realiza una operación DELETE en el ID de plato de barra de favoritos favoritos,

319
00:23:13,735 --> 00:23:18,640
ese plato específico se eliminará de la lista de favoritos.

320
00:23:18,640 --> 00:23:23,125
Ahora, al realizar las operaciones POST y DELETE,

321
00:23:23,125 --> 00:23:28,110
debe asegurarse de que no agregará duplicados al ID del plato.

322
00:23:28,110 --> 00:23:33,165
Entonces, antes de agregar un ID de objeto de plato a la lista de platos,

323
00:23:33,165 --> 00:23:39,490
compruebe siempre si el ID del plato ya existe en la lista de platos.

324
00:23:39,490 --> 00:23:45,430
Ahora es aquí donde puede usar el método de matriz indexOf para comprobar

325
00:23:45,430 --> 00:23:52,395
si ya existe un ID de documento en una matriz de documentos.

326
00:23:52,395 --> 00:23:56,725
Así que esa es otra gran pista sobre cómo vas a implementar esa parte.

327
00:23:56,725 --> 00:23:59,610
Y la tercera tarea, por supuesto, es montar

328
00:23:59,610 --> 00:24:05,725
el enrutador favorito en los puntos finales favoritos de barra mediante la actualización del archivo app.js.

329
00:24:05,725 --> 00:24:08,490
El enrutador favorito en sí se implementará en

330
00:24:08,490 --> 00:24:13,710
la carpeta de rutas en el archivo favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Así que con esto he descrito lo que

332
00:24:17,010 --> 00:24:21,010
se supone que debes implementar en la cuarta y última tarea.

333
00:24:21,010 --> 00:24:24,015
Y espero que esta tarea le ayude

334
00:24:24,015 --> 00:24:27,930
a consolidar todo lo que ha aprendido en el curso,

335
00:24:27,930 --> 00:24:32,685
desde el diseño del router express,

336
00:24:32,685 --> 00:24:40,720
hasta hacer MongoDB y también el esquema y modelos de Mongo,

337
00:24:40,720 --> 00:24:45,095
y también realizar la autenticación de usuario adecuada.

338
00:24:45,095 --> 00:24:47,685
Y como he mencionado de nuevo,

339
00:24:47,685 --> 00:24:52,965
solo un usuario autenticado obtendrá acceso a su lista de favoritos.

340
00:24:52,965 --> 00:24:55,920
Incluso la operación GET sólo puede ser realizada por

341
00:24:55,920 --> 00:25:00,750
un usuario autenticado en el extremo de favoritos de barra diagonal.

342
00:25:00,750 --> 00:25:05,640
Y solo conseguirías los favoritos para ese usuario en particular.

343
00:25:05,640 --> 00:25:12,000
No se puede permitir que un usuario diferente acceda a los favoritos de otro usuario.

344
00:25:12,000 --> 00:25:15,840
De nuevo, eso también le dice cómo se supone que debe realizar

345
00:25:15,840 --> 00:25:20,890
la autenticación en los diferentes puntos finales de ruta.

346
00:25:20,890 --> 00:25:27,595
Con esto completo la descripción de las tareas en la cuarta asignación.

347
00:25:27,595 --> 00:25:31,790
Diviértete completando esta tarea.