1
00:00:00,025 --> 00:00:04,580
[MÚSICA]

2
00:00:04,580 --> 00:00:09,730
En el ejercicio anterior hemos conseguido que nuestros servidores loopback lleguen a cierta etapa.

3
00:00:09,730 --> 00:00:13,549
Ahora podemos conectar nuestros servidores de loopback a la base de datos mongolab,

4
00:00:15,040 --> 00:00:19,290
la base de datos actúa como fuente de datos para nuestros servidores de loopback.

5
00:00:19,290 --> 00:00:24,042
También definimos listas de acceso controladas para controlar el acceso al radio, el

6
00:00:24,042 --> 00:00:28,010
resto están aquí, en partes con nuestro servidor de bucle invertido.

7
00:00:28,010 --> 00:00:31,590
En este ejercicio, exploraremos las relaciones de bucle invertido.

8
00:00:31,590 --> 00:00:36,510
Ahora podemos definir modelos y definir relaciones entre los modelos.

9
00:00:36,510 --> 00:00:40,280
Entonces, por ejemplo, tomemos el ejemplo de un comentario.

10
00:00:40,280 --> 00:00:44,860
Cuando publica un comentario sobre un plato, el comentario está relacionado con el plato.

11
00:00:44,860 --> 00:00:46,980
Un comentario pertenece a un plato.

12
00:00:46,980 --> 00:00:50,610
Del mismo modo, un usuario específico publica un comentario.

13
00:00:50,610 --> 00:00:55,730
Por lo tanto, el comentario pertenece a la relación con este usuario específico.

14
00:00:55,730 --> 00:00:59,370
Ahora, cuando se mira la relación en la dirección inversa,

15
00:00:59,370 --> 00:01:02,555
un plato puede tener varios comentarios asociados con él, y de

16
00:01:02,555 --> 00:01:05,616
manera similar, un usuario puede haber publicado varios comentarios.

17
00:01:05,616 --> 00:01:10,512
Así que estos son los mayores tipos de relaciones que puede definir entre

18
00:01:10,512 --> 00:01:14,640
los diferentes modelos dentro de nuestro servidor de bucle invertido.

19
00:01:14,640 --> 00:01:18,930
También veremos el uso de un bucle de retorno mixto,

20
00:01:18,930 --> 00:01:23,460
que nos permite agregar propiedades adicionales a nuestros modelos.

21
00:01:23,460 --> 00:01:28,850
Al final de este ejercicio tendrá un servidor de bucle invertido bastante completo,

22
00:01:28,850 --> 00:01:32,770
que luego podemos conectar a nuestro cliente angular y

23
00:01:32,770 --> 00:01:37,400
poder hacer uso de él como back-end para nuestro cliente angular.

24
00:01:39,650 --> 00:01:46,350
Para continuar con el ejercicio, en la carpeta de nuestro servidor de bucle invertido,

25
00:01:46,350 --> 00:01:50,910
vamos a crear un nuevo modelo para un comentario.

26
00:01:50,910 --> 00:01:55,040
Entonces este modelo se definirá como

27
00:01:56,610 --> 00:02:01,930
comentario, y en este caso ese modelo también se guarda

28
00:02:01,930 --> 00:02:07,030
en MongoDB y será como un modelo persistente,

29
00:02:07,030 --> 00:02:12,040
y expondremos el comentario a través de la API REST y

30
00:02:13,580 --> 00:02:18,180
la carpeta del modelo está en la carpeta común y para

31
00:02:18,180 --> 00:02:22,170
este comentario tendremos dos propiedades asociadas con él.

32
00:02:22,170 --> 00:02:28,489
Y la primera propiedad es Rating.

33
00:02:30,647 --> 00:02:34,499
Que es del tipo Número.

34
00:02:34,499 --> 00:02:39,300
Esto es necesario y el valor predeterminado, lo dejaré como 5.

35
00:02:39,300 --> 00:02:45,988
Y la segunda propiedad sería Comment, que es de la cadena de tipo.

36
00:02:45,988 --> 00:02:52,410
Esto es obligatorio y el valor predeterminado está vacío.

37
00:02:52,410 --> 00:02:56,320
Así que cada comentario tendrá estas dos propiedades, calificación y comentario,

38
00:02:56,320 --> 00:02:57,800
asociadas con él.

39
00:02:57,800 --> 00:03:01,190
Además, ahora tenemos que definir la relación entre el comentario y

40
00:03:01,190 --> 00:03:06,000
el usuario que está enviando el comentario, y también el comentario y

41
00:03:06,000 --> 00:03:10,260
el plato con el que este comentario está asociado.

42
00:03:10,260 --> 00:03:15,010
Del mismo modo, hemos visto en el ejercicio anterior que han añadido

43
00:03:15,010 --> 00:03:17,360
sus favoritos para un usuario.

44
00:03:17,360 --> 00:03:22,610
Entonces, para definir los favoritos, permítanme volver a definir un modelo,

45
00:03:22,610 --> 00:03:29,390
y ese nombre del modelo es Favorite y esto también se guarda en el MongoDB,

46
00:03:29,390 --> 00:03:33,870
y esto también es un PersistedModel, y

47
00:03:33,870 --> 00:03:39,120
expondremos el favorito para el resto API y está en la carpeta común.

48
00:03:39,120 --> 00:03:43,020
Ahora el favorito en sí mismo no necesita ninguna propiedad específica porque todo

49
00:03:43,020 --> 00:03:48,770
lo que lo hace es asociar al usuario específico con este plato específico.

50
00:03:48,770 --> 00:03:52,790
Así que el favorito aquí se va a utilizar simplemente como un puente entre el usuario

51
00:03:52,790 --> 00:03:53,770
y el plato.

52
00:03:53,770 --> 00:03:58,385
Por lo tanto, usaremos el favorito como una forma de definir las relaciones entre el plato y

53
00:03:58,385 --> 00:04:00,320
un usuario.

54
00:04:00,320 --> 00:04:02,710
Por lo tanto, no tiene ninguna propiedad específica.

55
00:04:02,710 --> 00:04:07,970
Así que ahora hemos añadido dos modelos a nuestro servidor de bucle invertido.

56
00:04:07,970 --> 00:04:10,950
Ahora, empecemos a definir las relaciones modelo.

57
00:04:10,950 --> 00:04:13,110
Ahora, como expliqué anteriormente,

58
00:04:13,110 --> 00:04:17,260
hay varios tipos de relaciones modelo que podemos definir.

59
00:04:17,260 --> 00:04:22,230
Comencemos con la definición de la relación entre un plato y un comentario.

60
00:04:22,230 --> 00:04:27,820
Entonces, para definir un modelo en loopback, diremos, relación lb.

61
00:04:27,820 --> 00:04:29,890
Y cuando entra la relación,

62
00:04:29,890 --> 00:04:34,370
necesitamos especificar el modelo a partir del cual crear la relación.

63
00:04:34,370 --> 00:04:38,700
Así que en primer lugar, vamos a crear una relación entre un plato.

64
00:04:38,700 --> 00:04:45,080
Así que a partir de los platos, y un plato podría tener muchos comentarios asociados con él,

65
00:04:45,080 --> 00:04:50,160
así que

66
00:04:50,160 --> 00:04:56,480
es por eso que el tipo de relación tiene muchos y está asociado con un comentario y el nombre de la propiedad para

67
00:04:56,480 --> 00:05:02,060
la relación lo dejaré como el predeterminado con sólo comentario con

68
00:05:04,320 --> 00:05:09,470
una pequeña letra c. clave externa personalizada específica si queremos.

69
00:05:09,470 --> 00:05:13,600
Si no lo hacemos, loopback asignará automáticamente la clave externa,

70
00:05:13,600 --> 00:05:18,290
que no serían más que los comentarios y un id asociado con ella.

71
00:05:18,290 --> 00:05:21,700
Así que mirará hacia atrás para definirlo automáticamente.

72
00:05:21,700 --> 00:05:25,860
También podemos tener a través de modelos, que en este caso no es aplicable.

73
00:05:25,860 --> 00:05:31,490
Un modelo a través nos permitirá definir la relación con uno y otro modelo y

74
00:05:31,490 --> 00:05:36,900
en este caso, no tenemos tal relación, así que simplemente diremos que no y

75
00:05:36,900 --> 00:05:40,670
no anidaremos la API REST, y también,

76
00:05:40,670 --> 00:05:45,430
desactivaremos la relación para que no se incluya.

77
00:05:45,430 --> 00:05:48,480
Y así, hemos especificado

78
00:05:48,480 --> 00:05:53,000
que la inhabilitación de la relación de ser incluida es no.

79
00:05:53,000 --> 00:05:55,790
Más tarde verá por qué esto es importante.

80
00:05:55,790 --> 00:05:59,910
Tendríamos una forma de incluir información de un

81
00:06:00,950 --> 00:06:04,370
modelo en otro modelo haciendo una inclusión allí.

82
00:06:04,370 --> 00:06:10,500
Así que eso es algo que hemos pedido que no se impida.

83
00:06:10,500 --> 00:06:14,990
Ahora de manera similar, podemos definir la siguiente relación

84
00:06:14,990 --> 00:06:18,820
entre el comentario y los platos.

85
00:06:20,430 --> 00:06:24,720
Así que cuando se define una relación con el comentario y los platos, así que

86
00:06:24,720 --> 00:06:31,380
permítanme decirlo relación lb, y ahora vamos a definir la relación entre el comentario.

87
00:06:31,380 --> 00:06:35,620
Y dado que un comentario sólo puede pertenecer a un plato específico, por

88
00:06:35,620 --> 00:06:40,700
lo que vamos a definir que pertenece a una relación, y esto pertenece

89
00:06:40,700 --> 00:06:46,180
al plato aquí y el nombre de la propiedad para la relación sería platos.

90
00:06:46,180 --> 00:06:50,226
Y no usaremos una clave externa personalizada,

91
00:06:50,226 --> 00:06:56,067
permitiremos que la relación se use en las API REST.

92
00:06:56,067 --> 00:07:01,172
En realidad no queremos eso, así que debería haber escrito no para eso,

93
00:07:01,172 --> 00:07:06,026
pero iré a editar la relación creada en mi código allí.

94
00:07:06,026 --> 00:07:09,816
Así que puedo entrar en el archivo comment.jason y

95
00:07:09,816 --> 00:07:13,604
simplemente cambiar esto de un sí a un no allí,

96
00:07:13,604 --> 00:07:19,080
lo haré porque no quiero que se anide a continuación.

97
00:07:19,080 --> 00:07:20,430
Así que déjame seguir adelante y

98
00:07:20,430 --> 00:07:25,400
hacer ese cambio en el comentario llamado Jason antes de que me olvide de hacer eso.

99
00:07:25,400 --> 00:07:28,070
Y luego abre el comentario llamado Jason.

100
00:07:28,070 --> 00:07:33,210
Y ves que en el comentario llamado Jason tenemos esta relación aquí y

101
00:07:33,210 --> 00:07:40,810
luego voy a cortar esto porque no quiero que se haga ese anidamiento.

102
00:07:41,860 --> 00:07:48,422
Es un error que cometí al escribir, así que lo eliminaré.

103
00:07:48,422 --> 00:07:53,350
La siguiente relación que voy a definir es entre el comentario y

104
00:07:53,350 --> 00:07:54,760
el cliente.

105
00:07:54,760 --> 00:07:57,540
Permítanme de nuevo, escriba relación lb aquí.

106
00:07:59,670 --> 00:08:02,970
Así que vamos a definir la relación entre el comentario y el cliente.

107
00:08:02,970 --> 00:08:09,076
Un comentario pertenece a un cliente como cabría esperar,

108
00:08:09,076 --> 00:08:15,000
y, Aquí déjame

109
00:08:15,000 --> 00:08:21,050
entrar explícitamente, Una clave externa personalizada.

110
00:08:21,050 --> 00:08:24,350
Solo estoy haciendo esto para ilustrarte que puedo

111
00:08:25,400 --> 00:08:28,390
definir una clave externa específica aquí.

112
00:08:28,390 --> 00:08:32,910
No voy a anidar, y no voy a desactivar aquí.

113
00:08:32,910 --> 00:08:36,856
Por lo tanto, esta es la relación que definiré entre el comentario y

114
00:08:36,856 --> 00:08:38,210
el cliente.

115
00:08:38,210 --> 00:08:44,092
A continuación, Permítanme definir la relación entre el cliente y el comentario.

116
00:08:44,092 --> 00:08:49,897
Así que aquí, de un cliente, un cliente tiene muchos comentarios,

117
00:08:49,897 --> 00:08:54,886
y su nombre de propiedad voy a introducir como comentarios.

118
00:08:54,886 --> 00:09:01,576
Y luego, definiré la clave externa como CustomerID.

119
00:09:01,576 --> 00:09:07,990
Y no necesito un modelo a través aquí, no voy a anidar y no voy a desactivar.

120
00:09:07,990 --> 00:09:13,260
Así que ahora he definido todas las relaciones entre los comentarios y

121
00:09:13,260 --> 00:09:16,210
el cliente, y los comentarios y los platos.

122
00:09:16,210 --> 00:09:20,238
Ahora, lo mismo vamos a trabajar en los favoritos.

123
00:09:20,238 --> 00:09:26,113
Ahora, para los favoritos, Déjame definir

124
00:09:26,113 --> 00:09:33,560
la relación entre los platos y los favoritos.

125
00:09:33,560 --> 00:09:39,310
Así que un plato podría haber sido favorito para muchos usuarios,

126
00:09:39,310 --> 00:09:45,470
por lo que tiene muchas relaciones con un favorito.

127
00:09:45,470 --> 00:09:49,120
Y usaremos favoritos allí, y

128
00:09:49,120 --> 00:09:53,603
no necesitaremos un modelo a través y no y no.

129
00:09:53,603 --> 00:09:58,269
Entonces, ahora hemos definido que tiene muchas relaciones entre el plato y

130
00:09:58,269 --> 00:09:59,150
un favorito.

131
00:10:00,848 --> 00:10:06,153
Permítanme ahora definir una relación entre un favorito y un plato.

132
00:10:06,153 --> 00:10:11,282
Así que para definir la relación entre el favorito y

133
00:10:11,282 --> 00:10:15,852
el plato déjame decir favorito pertenece al plato, y

134
00:10:15,852 --> 00:10:20,995
vamos a utilizar los platos y no hay clave externa, no anidado.

135
00:10:25,515 --> 00:10:29,070
Y no inhabilitaremos la relación para que no se incluya.

136
00:10:31,485 --> 00:10:36,397
Ahora, tendremos que definir esa relación entre

137
00:10:36,397 --> 00:10:39,560
un favorito y un cliente.

138
00:10:39,560 --> 00:10:47,149
Así que vamos a decir que favorito pertenece a un cliente y,

139
00:10:50,393 --> 00:10:55,724
Vamos a definirlo como clave externa como un ID de cliente.

140
00:10:55,724 --> 00:11:03,370
No permitiremos el anidamiento de la API REST y no desactivaremos.

141
00:11:03,370 --> 00:11:09,430
Ahora la última relación, es entre el cliente y el favorito.

142
00:11:10,910 --> 00:11:16,339
Entonces, ahora definiremos la relación entre el cliente tiene muchos,

143
00:11:18,264 --> 00:11:21,440
Favoritos, y esto,

144
00:11:23,506 --> 00:11:29,194
definiré el CustomerID como la clave externa, no necesito un modelo pasante,

145
00:11:29,194 --> 00:11:33,433
y no permitiré el anidamiento y no desactivaré nada.

146
00:11:33,433 --> 00:11:38,353
Así que eso es todo, hemos definido todas las relaciones que necesitamos

147
00:11:38,353 --> 00:11:42,590
entre los comentarios y los clientes y los platos.

148
00:11:42,590 --> 00:11:46,680
Entre los favoritos, los clientes y los platos.

149
00:11:46,680 --> 00:11:51,080
Ahora, vamos a examinar el uso de un mixin.

150
00:11:51,080 --> 00:11:57,340
Ahora, este mixin que voy a usar con mi servidor Loopback es

151
00:11:57,340 --> 00:12:03,900
un mixin que agrega marcas de tiempo a cualquier cosa que se guarde o actualice.

152
00:12:03,900 --> 00:12:08,780
Así que recuerde que en nuestro servidor Express, tuvimos el creado en y

153
00:12:08,780 --> 00:12:14,550
actualizado en agregado automáticamente mediante el uso de Mangoose.

154
00:12:14,550 --> 00:12:18,399
Ahora, para Loopback, necesito usar este

155
00:12:18,399 --> 00:12:22,365
mixin específico llamado como Lookback ds timestamp mixin.

156
00:12:22,365 --> 00:12:27,130
así que TosDo que primero tengo que instalar el mixin en mi proyecto.

157
00:12:27,130 --> 00:12:30,955
Así que diré npm install

158
00:12:30,955 --> 00:12:38,609
loopback-ds-timestamp-mixin —save,

159
00:12:38,609 --> 00:12:44,164
y la instalación de este módulo de nodo.

160
00:12:44,164 --> 00:12:48,113
Y una vez que este módulo de nodo está instalado, como puede ver,

161
00:12:48,113 --> 00:12:51,680
esta es la versión número 3.4.1 que estoy usando.

162
00:12:51,680 --> 00:12:54,620
Como este mixin está instalado, necesito entrar y

163
00:12:54,620 --> 00:12:58,760
habilitar este uso de mixin dentro de mis modelos.

164
00:12:58,760 --> 00:13:03,970
Para hacer eso vamos al código, en el código déjame primero abrir

165
00:13:03,970 --> 00:13:09,736
ese conflicto de modelo adyacente, que está en la carpeta del servidor.

166
00:13:09,736 --> 00:13:14,716
Entonces, en el modelo confi.json, si vas aquí arriba, verás estas

167
00:13:14,716 --> 00:13:16,900
mixins definidas aquí.

168
00:13:16,900 --> 00:13:20,090
Así que tenemos las mixins de loopback common y loopback server.

169
00:13:20,090 --> 00:13:24,750
Ahora voy a agregar el nuevo mixin que acabo de agregar aquí.

170
00:13:24,750 --> 00:13:31,360
Así que, este mixin está en.. /node_modules.

171
00:13:31,360 --> 00:13:33,940
Entonces esto está en la carpeta de módulos de nodo justo allí.

172
00:13:35,894 --> 00:13:45,894
/loopback-ds-timestamp-mixin.

173
00:13:51,953 --> 00:13:58,762
Esto permite que mi servidor Loopback haga uso de este mixin dentro de mi servidor.

174
00:13:58,762 --> 00:14:01,971
Ahora no solo esto, necesito especificar para

175
00:14:01,971 --> 00:14:06,810
todos los modelos donde quiero que se incluya este mixin.

176
00:14:06,810 --> 00:14:11,014
Entonces, iré ahora a esa carpeta común, y

177
00:14:11,014 --> 00:14:16,812
en la carpeta común editaremos ese archivo comment.json y

178
00:14:16,812 --> 00:14:21,940
en el archivo comment.json, agregaremos en el mixin.

179
00:14:21,940 --> 00:14:26,539
Entonces, después de las propiedades, agregaré el mixin como

180
00:14:26,539 --> 00:14:30,490
sincronización entre comillas, dirás mixins.

181
00:14:33,167 --> 00:14:38,563
:, Y, allí,

182
00:14:38,563 --> 00:14:43,657
y dentro de los mixins veremos

183
00:14:43,657 --> 00:14:50,350
Timestamp, true.

184
00:14:51,863 --> 00:14:55,920
Esto mismo que necesito pegar en algunos de los otros modelos, así que

185
00:14:55,920 --> 00:14:57,445
déjame copiar esto.

186
00:14:57,445 --> 00:15:03,200
Entonces diremos mixins Timestamp true en comments.json.

187
00:15:03,200 --> 00:15:07,420
Luego iremos a dishes.json y

188
00:15:07,420 --> 00:15:11,680
luego agregaremos esto también a dishes.json y

189
00:15:11,680 --> 00:15:16,449
luego irán a favorite.json, y

190
00:15:16,449 --> 00:15:21,390
luego agregaremos a favorite.json.

191
00:15:21,390 --> 00:15:26,395
Lo agregaremos a readers.json, Y

192
00:15:26,395 --> 00:15:30,129
lo agregaremos a promotions.json.

193
00:15:32,495 --> 00:15:36,076
Y guarda todos los cambios.

194
00:15:36,076 --> 00:15:41,583
Ahora configuraremos algunas listas de control de acceso más, así que

195
00:15:41,583 --> 00:15:50,020
yendo al terminal déjame escribir lb acl para configurar algunas listas de control de acceso.

196
00:15:50,020 --> 00:15:53,990
Entonces, aquí para los platos,

197
00:15:53,990 --> 00:15:59,750
especificaré para todos los métodos y propiedades el derecho

198
00:16:01,070 --> 00:16:09,686
solo puede ser hecho por el usuario con el rol admin.

199
00:16:11,368 --> 00:16:17,240
Así que ese es el primer control de acceso que configuro para

200
00:16:17,240 --> 00:16:21,589
platos, luego hago lo mismo para los líderes.

201
00:16:22,940 --> 00:16:28,673
Todos los métodos y propiedades, escritura, otros,

202
00:16:28,673 --> 00:16:33,819
el rol de administrador otorgan acceso explícitamente.

203
00:16:33,819 --> 00:16:39,254
A continuación, para las promociones también,

204
00:16:39,254 --> 00:16:43,853
el mismo, todos los métodos y

205
00:16:43,853 --> 00:16:49,923
propiedades, escribir, y otros,

206
00:16:52,023 --> 00:16:57,256
Rol conceder acceso explícitamente, porque sólo desea que el administrador

207
00:16:57,256 --> 00:17:03,800
para poder hacer cualquier cambio en los platos, promociones, o líderes.

208
00:17:03,800 --> 00:17:09,230
Ahora, para los comentarios, los comentarios pueden ser publicados por cualquier usuario registrado.

209
00:17:09,230 --> 00:17:15,476
Por lo tanto, para los comentarios, permítanme definir la ACL para los comentarios.

210
00:17:15,476 --> 00:17:20,610
Diremos comentarios, todos los métodos y

211
00:17:20,610 --> 00:17:25,909
propiedades, todos los tipos, todos los usuarios,

212
00:17:25,909 --> 00:17:29,560
denegar explícitamente el acceso.

213
00:17:29,560 --> 00:17:36,430
Porque no queremos que sean capaces de hacer todas las cosas.

214
00:17:36,430 --> 00:17:44,200
Ahora, vamos a abrir sólo algunas de las operaciones a habilitar por los usuarios.

215
00:17:44,200 --> 00:17:47,749
Entonces, para comentarios, todos los métodos y

216
00:17:47,749 --> 00:17:52,330
propiedades, diremos operación de lectura. La

217
00:17:52,330 --> 00:17:58,910
operación de lectura de los comentarios será sólo un usuario autenticado.

218
00:17:58,910 --> 00:18:03,995
Por lo tanto, solo los usuarios que hayan iniciado sesión podrán leer los comentarios.

219
00:18:03,995 --> 00:18:09,951
Ahora de manera similar, permítanme definir para el

220
00:18:13,120 --> 00:18:17,201
, Comentarios, un solo método, y

221
00:18:17,201 --> 00:18:21,587
crear, ¿quién puede crear comentarios?

222
00:18:23,341 --> 00:18:29,583
Cualquier usuario autenticado, cualquier usuario autenticado puede crear comentarios.

223
00:18:29,583 --> 00:18:34,204
Así que vamos a conceder explícitamente el acceso, ahora,

224
00:18:34,204 --> 00:18:39,529
el último para los comentarios, Vamos a decir para

225
00:18:39,529 --> 00:18:43,720
el comentario, todos los métodos y propiedades.

226
00:18:43,720 --> 00:18:48,850
Escribir, lo que significa que, ¿a quién se le permite escribir el comentario?

227
00:18:48,850 --> 00:18:55,080
Solo el usuario que posee ese objeto puede realizar cambios en el comentario.

228
00:18:55,080 --> 00:19:00,080
Así que solo el usuario que ha enviado el comentario puede hacer cambios en el comentario,

229
00:19:00,080 --> 00:19:04,271
ya sea editar o eliminar el comentario, así que eso es lo que permitiremos.

230
00:19:04,271 --> 00:19:09,699
Mismo conjunto de operaciones, vamos a aplicarlos a los favoritos.

231
00:19:09,699 --> 00:19:14,703
Entonces, para los favoritos, ya que no hemos agregado

232
00:19:14,703 --> 00:19:20,680
ninguno de los controles de acceso, por lo que para los favoritos,

233
00:19:20,680 --> 00:19:25,545
todos los métodos y propiedades, todos los tipos,

234
00:19:25,545 --> 00:19:30,699
todos los usuarios, deniegan explícitamente el acceso allí.

235
00:19:30,699 --> 00:19:34,734
Para los favoritos, vamos a definir para

236
00:19:34,734 --> 00:19:39,047
todos los métodos y propiedades, leer,

237
00:19:39,047 --> 00:19:44,480
sólo para el usuario que posee ese objeto.

238
00:19:44,480 --> 00:19:46,910
Así que sólo el usuario puede leer

239
00:19:46,910 --> 00:19:51,186
sus propios favoritos, ningún otro usuario debería ser capaz de ver sus propios favoritos.

240
00:19:51,186 --> 00:19:56,616
Ahora el tercero es la creación de favoritos,

241
00:19:56,616 --> 00:20:02,192
por lo que para la creación de favoritos, diremos por

242
00:20:02,192 --> 00:20:07,035
favorito, un solo método, crear,

243
00:20:07,035 --> 00:20:13,510
cualquier usuario autenticado puede crear un comentario.

244
00:20:13,510 --> 00:20:19,980
Y por último, para un favorito, todos los métodos y

245
00:20:19,980 --> 00:20:26,280
propiedades, la operación de escritura, solo para el usuario que posee ese objeto.

246
00:20:26,280 --> 00:20:30,621
Así que solo el usuario que haya introducido el favorito para

247
00:20:30,621 --> 00:20:35,061
sí mismo puede editar o eliminar esos favoritos, eso es todo.

248
00:20:35,061 --> 00:20:39,288
Así que ahora hemos establecido todos los controles de acceso y

249
00:20:39,288 --> 00:20:43,530
todas las diferentes relaciones para nuestra aplicación.

250
00:20:45,200 --> 00:20:49,083
Ahora vamos a iniciar la API de descanso del servidor, y

251
00:20:49,083 --> 00:20:52,102
luego explorar algunos de estos detalles.

252
00:20:52,102 --> 00:20:57,142
Ahora, yendo a nuestra aplicación en el navegador, así que

253
00:20:57,142 --> 00:21:02,908
iremos a ese LoopBack Explorer en el navegador aquí.

254
00:21:02,908 --> 00:21:08,437
En el Explorador de LoopBack, lo que voy a hacer primero es iniciar sesión como administrador.

255
00:21:08,437 --> 00:21:15,960
Así que vamos a iniciar sesión como administrador yendo a /customers/Login.

256
00:21:15,960 --> 00:21:23,684
Y luego aquí escribiremos nombre de usuario,

257
00:21:27,188 --> 00:21:33,581
administrador, contraseña,

258
00:21:36,667 --> 00:21:41,781
contraseña, e iniciaremos sesión,

259
00:21:41,781 --> 00:21:46,655
y una vez que hayamos iniciado sesión, solo voy a copiar este ID,

260
00:21:46,655 --> 00:21:49,910
porque este es el token de acceso.

261
00:21:49,910 --> 00:21:55,074
Y voy a entrar aquí, y luego establecer el token de acceso con

262
00:21:55,074 --> 00:22:00,461
este nuevo token de acceso que acabo de obtener, después de eso,

263
00:22:02,944 --> 00:22:07,223
Déjame publicar algunos platos

264
00:22:07,223 --> 00:22:10,983
en mi servidor, así que ahora que estoy conectado como administrador,

265
00:22:10,983 --> 00:22:16,250
debería poder publicar platos en mi servidor.

266
00:22:16,250 --> 00:22:21,320
Así que voy a abrir la publicación, y recordar que le había dado el archivo DB.json,

267
00:22:21,320 --> 00:22:26,930
por lo que podemos copiar y pegar los platos en el campo de datos aquí.

268
00:22:26,930 --> 00:22:32,107
Este es mi primer plato, y en el momento en que

269
00:22:32,107 --> 00:22:37,842
publique, volverá con la información del plato aquí.

270
00:22:37,842 --> 00:22:42,680
Y tenga en cuenta que se agrega automáticamente en los campos CreateDat y UpdateDat aquí.

271
00:22:58,252 --> 00:23:04,798
Este es mi segundo plato, así que finalmente, he completado la introducción de todos los platos,

272
00:23:04,798 --> 00:23:10,770
todos los líderes, y todas las promociones, y todos hemos terminado.

273
00:23:10,770 --> 00:23:13,400
Así que vamos a seguir adelante y

274
00:23:13,400 --> 00:23:19,100
luego registrar un nuevo cliente en el sistema.

275
00:23:19,100 --> 00:23:23,910
Entonces, para hacer eso, permítanme eliminar este

276
00:23:23,910 --> 00:23:28,970
token de acceso, y luego registraremos un nuevo cliente en el sistema.

277
00:23:28,970 --> 00:23:35,640
Entonces, para hacer eso, iremos a publicar clientes, y luego para los datos,

278
00:23:35,640 --> 00:23:42,560
déjame simplemente hacer clic en este valor de ejemplo aquí, y luego publicarlo aquí.

279
00:23:42,560 --> 00:23:46,226
Y para los datos, el nombre de pila,

280
00:23:46,226 --> 00:23:50,788
déjame registrarme con mi nombre de pila.

281
00:23:50,788 --> 00:23:54,848
Así que este sería un

282
00:23:54,848 --> 00:23:59,760
usuario no administrador que estoy registrando, y,

283
00:24:04,270 --> 00:24:12,430
Y este correo electrónico verificó que debería eliminar esto de aquí, Pero debería incluir el

284
00:24:16,215 --> 00:24:22,380
campo, contraseña aquí, para poder registrar al usuario.

285
00:24:22,380 --> 00:24:26,387
Así que estoy registrando un nuevo usuario común aquí.

286
00:24:26,387 --> 00:24:32,422
Entonces, cuando me registro, vuelve para confirmar que este nuevo

287
00:24:32,422 --> 00:24:37,880
usuario registrado se agrega, y también me da una ID para ese usuario.

288
00:24:37,880 --> 00:24:43,475
Ahora déjame iniciar sesión como este usuario registrado y luego publicar un par de comentarios.

289
00:24:45,510 --> 00:24:50,757
Así que para iniciar sesión como usuario registrado, bajaré al inicio de sesión del cliente,

290
00:24:50,757 --> 00:24:56,822
y para el nombre de usuario, escribiré mi nombre

291
00:24:56,822 --> 00:25:03,440
y la contraseña y luego, cuando inicie sesión, volverá y me dará un ID.

292
00:25:03,440 --> 00:25:09,281
Ahora tenga en cuenta que este usuario en particular es un usuario ordinario y no un administrador,

293
00:25:09,281 --> 00:25:15,130
por lo que este usuario solo puede publicar comentarios y editar sus propios comentarios.

294
00:25:15,130 --> 00:25:19,030
Y o post-favoritos y editar sus propios favoritos.

295
00:25:19,030 --> 00:25:23,806
Por lo tanto, cuando publiques el usuario, verás que es el ID de usuario devuelto aquí,

296
00:25:23,806 --> 00:25:25,511
shis es el ID del usuario.

297
00:25:25,511 --> 00:25:29,921
Por lo tanto, necesitaríamos esto cada vez que

298
00:25:29,921 --> 00:25:32,800
publicamos comentarios o cuando publicamos nuestros favoritos.

299
00:25:34,030 --> 00:25:38,540
Por lo tanto, para publicar un comentario para este usuario, así que

300
00:25:38,540 --> 00:25:42,330
para publicar un comentario, permítanme publicar un par de comentarios en nombre de este usuario.

301
00:25:42,330 --> 00:25:47,400
Por lo tanto, iremos a Comentarios, y luego publicaremos algunos comentarios aquí.

302
00:25:47,400 --> 00:25:50,334
Por lo tanto, para publicar un comentario como usted nota,

303
00:25:50,334 --> 00:25:54,134
tenemos que proporcionar tres piezas de información.

304
00:25:54,134 --> 00:25:59,770
Tenemos que proporcionar el ID del cliente, el ID del plato, la calificación y el comentario.

305
00:25:59,770 --> 00:26:03,180
Así que para el CustomerID, acabamos de iniciar sesión, así que

306
00:26:03,180 --> 00:26:07,060
si vas a los clientes y aquí abajo en la parte inferior.

307
00:26:07,060 --> 00:26:11,939
Obtendremos el ID de cliente aquí, así que permítanme copiar el ID de usuario desde aquí.

308
00:26:11,939 --> 00:26:18,752
Y luego vaya a la sección de publicación de comentarios y

309
00:26:18,752 --> 00:26:23,673
luego pegue el ID de cliente allí.

310
00:26:23,673 --> 00:26:25,830
Déjame ir a buscar un plato.

311
00:26:27,470 --> 00:26:34,723
Así que si vas a, Platos y luego haces un conseguir en los platos,

312
00:26:34,723 --> 00:26:39,538
obtendrás todos los platos que están en el sistema.

313
00:26:39,538 --> 00:26:45,235
Así que de esto permítanme seleccionar el

314
00:26:47,635 --> 00:26:51,970
, Primer plato, así que voy a tomar la identificación del plato.

315
00:26:51,970 --> 00:26:55,087
A continuación, para publicar los comentarios, vamos a ir a Comentarios,

316
00:26:56,610 --> 00:26:59,960
Publicar donde estamos componiendo nuestro comentario.

317
00:26:59,960 --> 00:27:03,230
Y luego pegaré la identificación del plato ahí.

318
00:27:03,230 --> 00:27:08,440
Y para la calificación, Voy a cambiar esta calificación a 4 y,

319
00:27:14,109 --> 00:27:20,377
Sólo publicar, Este comentario,

320
00:27:20,377 --> 00:27:24,900
así que he publicado un comentario para este plato en particular.

321
00:27:24,900 --> 00:27:28,030
Permítanme publicar un comentario más para otro plato.

322
00:27:30,614 --> 00:27:32,710
Así que déjame agarrar este segundo plato.

323
00:27:38,222 --> 00:27:44,548
Así que aquí está la identificación del segundo plato así, de nuevo, volviendo a Comentarios.

324
00:27:49,110 --> 00:27:51,699
Déjame cambiar el Dishid aquí.

325
00:27:51,699 --> 00:27:56,874
Y luego, Déjame cambiar los comentarios para

326
00:27:56,874 --> 00:28:01,976
que veas que este es un comentario diferente para un plato diferente.

327
00:28:01,976 --> 00:28:07,182
Cuando publique el comentario, verá que volverá con esta respuesta aquí,

328
00:28:07,182 --> 00:28:11,422
con la calificación y el plato específico y el ID del cliente, etc.

329
00:28:11,422 --> 00:28:14,572
Así que ahora he publicado dos comentarios para dos platos diferentes aquí.

330
00:28:16,113 --> 00:28:23,040
Déjame, hacer estos dos como mis platos favoritos.

331
00:28:23,040 --> 00:28:25,750
Así que para hacer eso, déjame ir a Favoritos.

332
00:28:35,658 --> 00:28:38,350
Bajando a favoritos.

333
00:28:38,350 --> 00:28:40,310
Déjame publicar un par de favoritos.

334
00:28:40,310 --> 00:28:46,327
Así que para publicar un favorito de nuevo, voy a los favoritos post aquí.

335
00:28:46,327 --> 00:28:52,140
Luego hago clic en esto y luego pegaré en el único DISHID,

336
00:28:52,140 --> 00:28:58,073
para el ID de cliente, déjame ir hasta el cliente aquí,

337
00:28:58,073 --> 00:29:01,295
donde inicié sesión en el cliente.

338
00:29:01,295 --> 00:29:04,402
Así que obtendremos el ID de usuario desde allí.

339
00:29:04,402 --> 00:29:08,379
Y este es un ID de cliente, así que déjame ir a los Favoritos.

340
00:29:11,044 --> 00:29:16,398
Y luego, En los Favoritos,

341
00:29:16,398 --> 00:29:22,245
déjame probar el ID de cliente aquí, y luego publicar esto en mis favoritos.

342
00:29:22,245 --> 00:29:26,831
Entonces, cuando publico eso en mis favoritos, responde con esto para que

343
00:29:26,831 --> 00:29:32,997
pueda ver que el DishiD y el CustomerID y el FavoriteID se han publicado aquí.

344
00:29:32,997 --> 00:29:36,067
Déjame publicar un plato más a mis favoritos así que déjame ir a la,

345
00:29:40,771 --> 00:29:43,675
Platos aquí tengo otro plato.

346
00:29:43,675 --> 00:29:49,734
Así que déjame copiar el, ID del plato e ir a mis favoritos y

347
00:29:49,734 --> 00:29:57,140
luego reemplazar la identificación del dishe con ese nuevo plato, y luego publicar eso.

348
00:29:57,140 --> 00:30:01,004
Así que ahora debería tener dos favoritos en mi grupo.

349
00:30:03,416 --> 00:30:08,097
Maravilloso, así que ahora tenemos un par de favoritos,

350
00:30:08,097 --> 00:30:13,454
un montón de platos, un par de comentarios, todos publicados en.

351
00:30:13,454 --> 00:30:15,168
Ahora, ¿cómo es útil esto?

352
00:30:15,168 --> 00:30:22,554
Déjame, Cerrar todo esto y luego te mostrará cómo esto puede ser útil.

353
00:30:22,554 --> 00:30:27,238
Entonces, ahora cuando consigo platos, por ejemplo,

354
00:30:27,238 --> 00:30:31,096
cuando quiero olvidar un plato específico.

355
00:30:34,617 --> 00:30:41,440
Déjame traer este primer plato aquí, déjame copiar la identificación del plato y,

356
00:30:47,206 --> 00:30:50,900
puedo recuperar ese plato específico.

357
00:30:50,900 --> 00:30:55,089
Así que aquí ves que voy a /plates/ID así que

358
00:30:55,089 --> 00:30:59,489
aquí, cuando quiero recuperar ese plato específico.

359
00:30:59,489 --> 00:31:04,263
Puedo poner el Dishid allí y luego probarlo y

360
00:31:04,263 --> 00:31:07,595
aquí tengo el Dishid aquí.

361
00:31:07,595 --> 00:31:12,850
Ahora, si quiero incluir los comentarios del plato, entonces en el filtro,

362
00:31:15,876 --> 00:31:20,814
Debo escribir incluir entre comillas y

363
00:31:20,814 --> 00:31:25,286
luego entre corchetes especifico,

364
00:31:27,990 --> 00:31:29,850
El nombre de,

365
00:31:33,392 --> 00:31:38,793
La relación que quiero incluir en eso,

366
00:31:38,793 --> 00:31:42,540
así que cuando digo incluir comentarios.

367
00:31:42,540 --> 00:31:47,490
Así que esto es como los mongoles pueblan, actúa de manera similar.

368
00:31:47,490 --> 00:31:54,666
Así que cuando digo incluir comentarios y luego recuperar el plato,

369
00:31:54,666 --> 00:31:59,651
notar que cuando se recupera el plato,

370
00:32:01,219 --> 00:32:05,350
Aquí, se obtiene el plato, pero también se obtiene una variedad de comentarios aquí.

371
00:32:06,520 --> 00:32:11,395
Así es como puedes rellenar los detalles de la relación

372
00:32:11,395 --> 00:32:15,160
que tienes con otro elemento aquí.

373
00:32:15,160 --> 00:32:18,830
Ahora, de manera similar, ir a los comentarios, por ejemplo.

374
00:32:18,830 --> 00:32:24,365
En los comentarios también, cuando recupero los comentarios, puedo especificar dentro del filtro.

375
00:32:24,365 --> 00:32:29,137
Entonces, cuando solo digo comentarios GET, traerá de

376
00:32:29,137 --> 00:32:34,460
vuelta todos los comentarios que se han publicado.

377
00:32:34,460 --> 00:32:40,780
Ahora, si quiero rellenar la información DishiID y CustomerID, puedo decir filtro.

378
00:32:40,780 --> 00:32:45,675
En el filtro, puedo decir incluir.

379
00:32:45,675 --> 00:32:50,682
Y luego entre paréntesis, puedo decir platos porque

380
00:32:50,682 --> 00:32:57,436
esa es la relación que he definido dentro de los comentarios y

381
00:32:57,436 --> 00:33:01,761
los platos, y luego platos y cliente.

382
00:33:01,761 --> 00:33:06,628
Y cuando recupere esta información, verá que en los comentarios devueltos,

383
00:33:06,628 --> 00:33:10,311
para cada comentario, notará que el comentario se da y

384
00:33:10,311 --> 00:33:14,066
luego la información correspondiente del plato también se rellena, y

385
00:33:14,066 --> 00:33:18,990
la información correspondiente del cliente también se rellena para cada uno de los comentarios.

386
00:33:18,990 --> 00:33:25,040
De esta manera, ahora podemos poblar las dos relaciones que hemos definido a partir de

387
00:33:25,040 --> 00:33:30,030
los platos automáticamente aquí, como se muestra aquí.

388
00:33:30,030 --> 00:33:33,662
Del mismo modo, para los favoritos,

389
00:33:33,662 --> 00:33:37,943
cuando estamos recuperando los favoritos,

390
00:33:37,943 --> 00:33:42,886
diremos favoritos y un ID específico aquí.

391
00:33:42,886 --> 00:33:46,084
Y luego podemos filtrar, para

392
00:33:46,084 --> 00:33:50,910
que el favorito específico pueda ser recuperado.

393
00:33:50,910 --> 00:33:55,067
No puede recuperar todos los favoritos porque podrían ser favoritos de otros

394
00:33:55,067 --> 00:33:58,992
usuarios también en esa lista, por lo que no podremos hacer un GET en todos los favoritos.

395
00:33:58,992 --> 00:34:03,950
Pero en cambio, cuando recuperemos esto, entonces puede pedir que

396
00:34:03,950 --> 00:34:09,650
la información se complete aquí en función de las relaciones.

397
00:34:09,650 --> 00:34:14,403
Así que podemos decir, entre comillas, («incluir»: y corchetes escritos.

398
00:34:14,403 --> 00:34:21,605
Podemos decir ["platos», «cliente"]),

399
00:34:25,296 --> 00:34:29,382
Y recuperar la información.

400
00:34:29,382 --> 00:34:32,828
Así que notarías que aquí, en el Cuerpo de Respuesta,

401
00:34:32,828 --> 00:34:36,583
obtienes el favorito, pero también el plato correspondiente y

402
00:34:36,583 --> 00:34:40,700
la información del cliente correspondiente rellenado aquí.

403
00:34:40,700 --> 00:34:45,720
Así es como podemos recuperar información adicional

404
00:34:45,720 --> 00:34:50,410
de nuestro sitio de servidor según sea necesario.

405
00:34:50,410 --> 00:34:53,194
Con esto, completamos este ejercicio.

406
00:34:53,194 --> 00:34:59,730
En este ejercicio, le he demostrado cómo podemos definir varias relaciones

407
00:34:59,730 --> 00:35:04,920
y luego ser capaces de recuperar información, y también utilizar este

408
00:35:04,920 --> 00:35:10,250
filtro de inclusión para incluir la información adicional de esa relación en

409
00:35:10,250 --> 00:35:16,210
el documento cuando recupere el documento o un conjunto de documentos.

410
00:35:16,210 --> 00:35:18,880
Con esto, completamos este ejercicio.

411
00:35:18,880 --> 00:35:23,400
Así que en estos tres ejercicios que hemos hecho hasta ahora con LoopBack, he

412
00:35:23,400 --> 00:35:29,397
ilustrado varios aspectos de cómo puede configurar y construir su servidor LoopBack.

413
00:35:29,397 --> 00:35:32,720
Con esto, completamos este ejercicio.

414
00:35:32,720 --> 00:35:33,974
Este es un buen momento

415
00:35:33,974 --> 00:35:37,542
para que haga un comentario GET con las relaciones de bucle de retorno de mensaje.

416
00:35:37,542 --> 00:35:43,900
[ MÚSICA]