1
00:00:03,910 --> 00:00:09,095
Il est temps de commencer la quatrième et dernière affectation de ce cours.

2
00:00:09,095 --> 00:00:12,170
J' ai conçu cette mission pour être une consolidation

3
00:00:12,170 --> 00:00:15,610
de tout ce que vous avez appris dans ce cours.

4
00:00:15,610 --> 00:00:21,990
Donc, cette affectation impliquera le routage en utilisant le routeur express.

5
00:00:21,990 --> 00:00:26,340
Cela impliquera la conception de schémas dans le modèle,

6
00:00:26,340 --> 00:00:29,420
pour notre MongoDB et Mongoose,

7
00:00:29,420 --> 00:00:33,531
puis aussi il examinera brièvement l'authentification de l'utilisateur.

8
00:00:33,531 --> 00:00:36,420
Que faisons-nous exactement dans cette mission ?

9
00:00:36,420 --> 00:00:41,600
Cette affectation est basée sur la possibilité pour un utilisateur d'

10
00:00:41,600 --> 00:00:49,510
enregistrer et de récupérer une liste de plats comme plats préférés côté serveur.

11
00:00:49,510 --> 00:00:53,105
Si vous aviez suivi les cours précédents de cette spécialisation, en

12
00:00:53,105 --> 00:00:58,275
particulier les cours de développement d'applications mobiles hybrides,

13
00:00:58,275 --> 00:01:00,675
qu'il s'agisse d'un script ionique ou natif,

14
00:01:00,675 --> 00:01:06,720
vous avez vu que nous avons conçu les applications pour avoir la possibilité de permettre à l'utilisateur d'

15
00:01:06,720 --> 00:01:10,355
enregistrer des plats dans la liste de leurs favoris plats

16
00:01:10,355 --> 00:01:14,480
et aussi récupérer des plats de cette liste de leurs plats préférés.

17
00:01:14,480 --> 00:01:17,840
Lorsque nous avons implémenté cela dans les cours précédents,

18
00:01:17,840 --> 00:01:24,085
nous l'avions implémenté en utilisant le stockage local sur l'appareil spécifique.

19
00:01:24,085 --> 00:01:26,330
Dans cette affectation, vous allez étendre

20
00:01:26,330 --> 00:01:30,308
le côté serveur pour être en mesure de prendre en charge exactement cela.

21
00:01:30,308 --> 00:01:34,940
De cette façon, l'utilisateur peut enregistrer sa liste de plats favoris

22
00:01:34,940 --> 00:01:37,805
côté serveur et accéder à cette liste à partir de

23
00:01:37,805 --> 00:01:41,950
n'importe quel appareil à partir duquel il se connectera à son serveur.

24
00:01:41,950 --> 00:01:49,140
Ce que cela signifie, c'est que nous devons concevoir une nouvelle route pour notre serveur,

25
00:01:49,140 --> 00:01:52,615
que nous appellerons comme itinéraire /favoris.

26
00:01:52,615 --> 00:01:59,314
Sur cette route, nous devrons concevoir le routeur express pour soutenir les

27
00:01:59,314 --> 00:02:03,515
opérations get, post et delete sur cette route et

28
00:02:03,515 --> 00:02:08,495
aussi concevoir le schéma pour stocker les plats préférés

29
00:02:08,495 --> 00:02:13,343
et le modèle Mongoose correspondant et

30
00:02:13,343 --> 00:02:19,820
connecter les deux ensemble afin que les informations puissent être sauvegardées et récupéré à partir de MongoDB.

31
00:02:19,820 --> 00:02:27,590
Nous utiliserons également la population mongoose afin de puiser dans les informations

32
00:02:27,590 --> 00:02:32,000
du modèle utilisateur et du modèle de plats lorsque nous

33
00:02:32,000 --> 00:02:37,105
établirons cette liste de plats préférés pour notre utilisateur.

34
00:02:37,105 --> 00:02:41,355
Les informations sur les plats préférés que vous stockez ne

35
00:02:41,355 --> 00:02:46,355
contiendront en fait ni les informations sur l'utilisateur ni les informations sur le plat.

36
00:02:46,355 --> 00:02:53,000
Au lieu de cela, il contiendra des pointeurs vers les documents pour

37
00:02:53,000 --> 00:02:56,660
le document plat et pour le document utilisateur, puis nous publierons ces informations

38
00:02:56,660 --> 00:03:03,155
lorsque nous renvoyons ces informations en réponse à une demande get.

39
00:03:03,155 --> 00:03:05,495
Regardons comment nous mettons en œuvre

40
00:03:05,495 --> 00:03:13,135
cette mission finale ainsi que les différentes tâches de cette mission finale.

41
00:03:13,135 --> 00:03:17,370
Pour vous aider à comprendre ce qui est requis dans

42
00:03:17,370 --> 00:03:21,330
l'affectation finale ou ce que vous allez implémenter dans l'affectation finale,

43
00:03:21,330 --> 00:03:26,835
permettez-moi de démontrer ce que votre serveur est censé faire à la fin de cette affectation,

44
00:03:26,835 --> 00:03:31,540
puis je vais énumérer les trois tâches que vous devez effectuer dans cette affectation.

45
00:03:31,540 --> 00:03:35,460
Pour commencer, nous avons besoin d'un ensemble de plats déjà

46
00:03:35,460 --> 00:03:40,250
côté serveur afin que l'utilisateur puisse marquer certains d'entre eux comme leurs plats préférés.

47
00:03:40,250 --> 00:03:47,805
Je suis allé de l'avant et ajouté en quatre plats à ma liste de plats côté serveur.

48
00:03:47,805 --> 00:03:50,065
Tu sais déjà comment faire ça.

49
00:03:50,065 --> 00:03:52,725
Vous devez vous connecter en tant qu'administrateur, puis poster

50
00:03:52,725 --> 00:03:56,670
ces informations sur le serveur un par un.

51
00:03:56,670 --> 00:04:01,590
Pour vous permettre d'obtenir les informations pour chacun de ces plats,

52
00:04:01,590 --> 00:04:05,405
je vous ai déjà fourni le fichier db.json qui contient

53
00:04:05,405 --> 00:04:11,400
les documents JSON correspondant à chacun de ces plats dans les ressources d'affectation.

54
00:04:11,400 --> 00:04:14,670
Vous pouvez l'ouvrir, couper et coller des informations à partir de là, puis

55
00:04:14,670 --> 00:04:19,576
créer une liste de plats côté serveur.

56
00:04:19,576 --> 00:04:22,980
Ici, vous verrez que j'ai déjà effectué l'opération get sur le

57
00:04:22,980 --> 00:04:26,940
localhost : 3000/plats et puis vous

58
00:04:26,940 --> 00:04:31,140
voyez que j'ai déjà obtenu la liste des plats ici.

59
00:04:31,140 --> 00:04:38,570
Ce qui est important pour nous de noter, c'est que chaque plat aura son propre ID de plat ici.

60
00:04:38,570 --> 00:04:42,384
Lorsque vous devez marquer n'importe quel plat comme votre favori,

61
00:04:42,384 --> 00:04:46,470
vous devez accéder à l'ID du plat pour chacun de ces plats.

62
00:04:46,470 --> 00:04:51,030
Vous pouvez copier ces quatre ID de plat, puis les enregistrer afin que lorsque vous

63
00:04:51,030 --> 00:04:56,094
effectuez les opérations pour ajouter ces plats à la liste des plats,

64
00:04:56,094 --> 00:05:00,085
vous puissiez utiliser cet ID de plat.

65
00:05:00,085 --> 00:05:02,730
Je vais donc copier ces quatre ID de plat, puis

66
00:05:02,730 --> 00:05:05,820
les enregistrer dans un document texte afin que je puisse les utiliser.

67
00:05:05,820 --> 00:05:09,325
Avant de pouvoir ajouter des plats à ma liste de plats,

68
00:05:09,325 --> 00:05:12,347
j'ai évidemment besoin de me connecter en tant qu'utilisateur.

69
00:05:12,347 --> 00:05:16,370
Permettez-moi d'aller de l'avant et de me connecter en tant que l'un des utilisateurs.

70
00:05:16,370 --> 00:05:25,245
Pour ce faire, laissez-moi faire un post sur le localhost : 3000/users/login.

71
00:05:25,245 --> 00:05:28,530
Et dans le corps du message,

72
00:05:28,530 --> 00:05:35,940
laissez-moi taper l'un des utilisateurs enregistrés.

73
00:05:35,940 --> 00:05:42,375
Je ne veux pas me connecter en tant qu'administrateur, mais comme l'un des autres utilisateurs normaux.

74
00:05:42,375 --> 00:05:47,442
Alors laissez-moi faire ce post à https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Maintenant, toutes ces opérations,

76
00:05:48,890 --> 00:05:55,200
il est préférable de le faire sur le point de terminaison HTTPS plutôt que sur le point de terminaison HTTP.

77
00:05:55,200 --> 00:06:01,920
Nous ferons un post sur ce point de terminaison et nous nous connecterons à notre service,

78
00:06:01,920 --> 00:06:05,920
et en réponse, vous devriez être en mesure de mettre la main sur le jeton web JSON.

79
00:06:05,920 --> 00:06:11,190
Donc, faisons une copie de ce jeton web JSON parce que nous en aurons besoin pour

80
00:06:11,190 --> 00:06:16,905
effectuer l'une des opérations pour ajouter des plats à notre liste de favoris.

81
00:06:16,905 --> 00:06:22,628
Permettez-moi de copier ce jeton et de l'enregistrer dans mon document texte.

82
00:06:22,628 --> 00:06:27,935
Maintenant, comment puis-je ajouter un plat à ma liste de favoris ?

83
00:06:27,935 --> 00:06:33,450
Pour ce faire, la première étape est que nous devons

84
00:06:33,450 --> 00:06:40,355
accéder au point de terminaison /favorites.

85
00:06:40,355 --> 00:06:45,435
Si vous voulez ajouter un plat spécifique à la liste des favoris,

86
00:06:45,435 --> 00:06:52,605
nous disons simplement /favoris, puis ajoutons l'ID du plat dans l'URL ici.

87
00:06:52,605 --> 00:06:57,970
Permettez-moi de coller dans un ID plat que je veux ajouter à ma liste de favoris.

88
00:06:57,970 --> 00:07:03,130
Ici, j'ai collé dans mon ID plat à la liste des favoris.

89
00:07:03,130 --> 00:07:08,025
Le corps de ce message hôte

90
00:07:08,025 --> 00:07:13,590
ne contiendra rien parce que tout ce dont j'ai besoin est déjà dans l'URL.

91
00:07:13,590 --> 00:07:16,043
Et pour l'en-tête,

92
00:07:16,043 --> 00:07:18,984
j'ai besoin de configurer l'en-tête d'autorisation,

93
00:07:18,984 --> 00:07:21,371
et dans l'en-tête d'autorisation,

94
00:07:21,371 --> 00:07:24,380
j'ai besoin du jeton.

95
00:07:24,380 --> 00:07:29,487
Donc, laissez-moi copier le jeton ici, puis dans l'en-tête d'autorisation,

96
00:07:29,487 --> 00:07:34,750
disons porteur, et coller dans l'en-tête d'autorisation.

97
00:07:34,750 --> 00:07:39,853
Vous pouvez également faire la même chose pour obtenir le jeton.

98
00:07:39,853 --> 00:07:46,925
Vous pouvez également vous connecter via Facebook, puis obtenir le jeton web JSON.

99
00:07:46,925 --> 00:07:50,960
J' ai illustré pour obtenir le jeton Web JSON en utilisant

100
00:07:50,960 --> 00:07:55,655
l'authentification locale standard en utilisant le nom d'utilisateur et le mot de passe,

101
00:07:55,655 --> 00:07:58,940
mais peu importe la façon dont vous avez obtenu le jeton Web JSON.

102
00:07:58,940 --> 00:08:01,160
Tant que vous avez le jeton Web JSON,

103
00:08:01,160 --> 00:08:04,376
vous devriez être en mesure d'effectuer toutes ces opérations.

104
00:08:04,376 --> 00:08:10,280
Laissez-moi effectuer la post-opération sur ce point de terminaison et rappelez-vous que

105
00:08:10,280 --> 00:08:16,570
c'est l'ID de plat pour le plat spécifique que je veux ajouter à ma liste de favoris.

106
00:08:16,570 --> 00:08:19,895
Lorsque je poste dans la liste des favoris,

107
00:08:19,895 --> 00:08:29,135
vous verrez que mon serveur répondra avec ce document ici dans le corps de la réponse.

108
00:08:29,135 --> 00:08:33,328
Maintenant, examinons ce document pour voir ce qu'il contient exactement.

109
00:08:33,328 --> 00:08:36,680
Ce document, comme vous pouvez le voir, contient un ID,

110
00:08:36,680 --> 00:08:39,511
mais évidemment parce qu'il s'agit d'un document JSON,

111
00:08:39,511 --> 00:08:43,115
en plus il contient un

112
00:08:43,115 --> 00:08:46,335
champ ici appelé utilisateur.

113
00:08:46,335 --> 00:08:48,425
Maintenant, qu'est-ce que ce champ utilisateur stocke ?

114
00:08:48,425 --> 00:08:53,848
Ce champ utilisateur est l'ID d'objet de l'utilisateur

115
00:08:53,848 --> 00:09:00,620
correspondant à qui est cette liste particulière de favoris.

116
00:09:00,620 --> 00:09:02,960
Et regarde la vaisselle.

117
00:09:02,960 --> 00:09:10,120
Les plats sont un tableau et c'est un tableau d'ID de plat.

118
00:09:10,120 --> 00:09:15,950
Et dans ce cas, je viens d'ajouter le premier plat à ma liste de favoris.

119
00:09:15,950 --> 00:09:22,690
Donc, c'est pourquoi je n'ai qu'un plat dans la gamme de plats dans ma liste de favoris.

120
00:09:22,690 --> 00:09:30,140
Donc, cela devrait immédiatement vous suggérer comment concevoir le schéma pour vos favoris.

121
00:09:30,140 --> 00:09:34,760
Ainsi, plats contient les ID d'objet de chacun des plats,

122
00:09:34,760 --> 00:09:39,124
et l'utilisateur contient l'ID d'objet correspondant à l'utilisateur.

123
00:09:39,124 --> 00:09:42,335
Vous avez déjà vu comment j'utilise

124
00:09:42,335 --> 00:09:49,800
les informations pour faire population de l'information lorsque je fais une opération get.

125
00:09:49,800 --> 00:09:52,690
Nous l'avons déjà fait avec des commentaires.

126
00:09:52,690 --> 00:09:57,980
Donc, cela devrait vous donner un grand indice sur la façon dont vous conceviez le schéma qui contient

127
00:09:57,980 --> 00:10:04,855
l'utilisateur et le tableau de plats dans ma liste de plats ici.

128
00:10:04,855 --> 00:10:07,330
Maintenant, nous avons fait le post à ce sujet.

129
00:10:07,330 --> 00:10:09,500
Prenons la liste des favoris.

130
00:10:09,500 --> 00:10:11,750
Donc, pour obtenir la liste des favoris,

131
00:10:11,750 --> 00:10:14,405
j'ai besoin d'effectuer une opération get.

132
00:10:14,405 --> 00:10:16,561
Maintenant, pour l'opération get,

133
00:10:16,561 --> 00:10:21,950
j'ai évidemment besoin d'avoir aussi les informations d'autorisation ici parce que

134
00:10:21,950 --> 00:10:27,635
vous voulez qu'un utilisateur puisse récupérer uniquement sa liste de favoris,

135
00:10:27,635 --> 00:10:32,905
et aucun autre utilisateur ne peut récupérer la liste des favoris pour un autre utilisateur.

136
00:10:32,905 --> 00:10:34,590
Donc, c'est très important.

137
00:10:34,590 --> 00:10:37,640
Donc, cela vous suggère que vous devez

138
00:10:37,640 --> 00:10:41,620
vérifier l'authenticité de l'utilisateur même pour l'opération get.

139
00:10:41,620 --> 00:10:45,185
Maintenant, comment la post-opération

140
00:10:45,185 --> 00:10:49,760
obtient-elle automatiquement cet ID d'objet correspondant à l'utilisateur ?

141
00:10:49,760 --> 00:10:55,175
Rappelons que lorsque vous incluez l'en-tête d'autorisation ici,

142
00:10:55,175 --> 00:10:57,457
à partir de l'en-tête d'autorisation,

143
00:10:57,457 --> 00:11:01,055
par la façon dont vous effectuez l'autorisation de l'utilisateur,

144
00:11:01,055 --> 00:11:06,240
diriger les propriétés utilisateur déjà chargées sur l'objet de requête.

145
00:11:06,240 --> 00:11:10,270
Et c'est là que vous aurez accès à l'ID d'objet de l'utilisateur.

146
00:11:10,270 --> 00:11:13,914
Donc, un autre indice sur la façon dont vous allez remplir ces informations.

147
00:11:13,914 --> 00:11:16,655
Donc, c'est pourquoi remarquer que lorsque j'ai effectué le post,

148
00:11:16,655 --> 00:11:19,625
je n'ai jamais spécifié l'utilisateur car

149
00:11:19,625 --> 00:11:23,825
les informations de l'utilisateur doivent automatiquement être

150
00:11:23,825 --> 00:11:28,484
dérivées de ce que nous avons fourni ici dans l'en-tête d'autorisation.

151
00:11:28,484 --> 00:11:32,565
Donc, un indice de plus sur la façon dont vous allez procéder à l'implémentation de ceci.

152
00:11:32,565 --> 00:11:36,830
Donc, c'est pourquoi j'ai dit que cette mission est une consolidation

153
00:11:36,830 --> 00:11:41,835
de tous les sujets que vous avez explorés dans ce cours.

154
00:11:41,835 --> 00:11:47,200
Maintenant, je ne supporte pas une opération get sur un ID plat spécifique.

155
00:11:47,200 --> 00:11:50,610
Cela n'a pas de sens pour soutenir cela sur les favoris,

156
00:11:50,610 --> 00:11:53,345
dans un ID plat spécifique.

157
00:11:53,345 --> 00:11:58,595
Au lieu de cela, nous pouvons effectuer une opération get sur l'hôte local 3443/favoris.

158
00:11:58,595 --> 00:12:01,670
Et puis nous effectuons l'opération get.

159
00:12:01,670 --> 00:12:09,398
Vous remarquerez immédiatement que le document qui vous est renvoyé contient

160
00:12:09,398 --> 00:12:17,715
les informations de l'utilisateur déjà renseignées par l'opération get ici.

161
00:12:17,715 --> 00:12:18,950
Donc, les informations de l'utilisateur.

162
00:12:18,950 --> 00:12:22,112
Donc, au lieu de l'ID utilisateur là,

163
00:12:22,112 --> 00:12:26,445
les informations de l'utilisateur sont déjà présentes dedans.

164
00:12:26,445 --> 00:12:28,730
Cela se fait par la population de Mongo.

165
00:12:28,730 --> 00:12:34,435
Donc, c'est un autre grand indice sur la façon dont vous êtes censé implémenter l'opération get.

166
00:12:34,435 --> 00:12:37,130
Non seulement les informations de l'utilisateur sont renseignées.

167
00:12:37,130 --> 00:12:39,626
Maintenant, pourquoi voudrais-je que les informations de l'utilisateur soient renseignées ?

168
00:12:39,626 --> 00:12:44,540
Parce que cela peut être utile lorsque j'affiche des informations.

169
00:12:44,540 --> 00:12:46,350
Cela peut ne pas être nécessaire,

170
00:12:46,350 --> 00:12:49,445
mais je fais juste cela par souci d'exhaustivité

171
00:12:49,445 --> 00:12:53,825
parce que si vous récupérez la liste des favoris pour un utilisateur particulier,

172
00:12:53,825 --> 00:12:56,120
vous savez automatiquement qui est l'utilisateur,

173
00:12:56,120 --> 00:12:59,083
et cet utilisateur particulier se connecte de toute façon.

174
00:12:59,083 --> 00:13:01,385
Mais si vous voulez les informations de l'utilisateur,

175
00:13:01,385 --> 00:13:06,278
vous pouvez effectuer cette opération pour obtenir les informations de cet utilisateur.

176
00:13:06,278 --> 00:13:10,720
Donc, juste pour vous illustrer que la population de Mongo peut être utilisée,

177
00:13:10,720 --> 00:13:16,515
j'ai illustré non seulement que dans la liste des plats ici,

178
00:13:16,515 --> 00:13:22,820
l'information sur chaque plat est déjà peuplée dans ce tableau.

179
00:13:22,820 --> 00:13:24,907
Donc, si vous avez un tas de plats,

180
00:13:24,907 --> 00:13:30,385
les informations de chacun de ces plats devraient être remplies dans ce tableau.

181
00:13:30,385 --> 00:13:34,670
Donc, c'est l'utilisation de la population d'un autre Mongo

182
00:13:34,670 --> 00:13:38,555
que vous voyez pour remplir les informations sur les plats.

183
00:13:38,555 --> 00:13:44,014
Juste par la façon dont vous configurez le schéma pour vos favoris,

184
00:13:44,014 --> 00:13:47,840
cela devrait être automatiquement possible pour vous en utilisant

185
00:13:47,840 --> 00:13:52,010
juste le point rempli sur la liste des plats ici.

186
00:13:52,010 --> 00:13:54,103
Donc, c'est la deuxième partie.

187
00:13:54,103 --> 00:13:59,213
Maintenant que nous sommes en mesure de récupérer la méthode get plats,

188
00:13:59,213 --> 00:14:03,590
laissez-moi vous montrer comment vous pouvez effectuer une post-opération où vous pouvez

189
00:14:03,590 --> 00:14:08,750
ajouter un tas de plats dans votre liste de favoris.

190
00:14:08,750 --> 00:14:11,145
Maintenant, pour revenir à ce post,

191
00:14:11,145 --> 00:14:18,145
si vous avez besoin d'ajouter non seulement un mais un ensemble de plats à votre liste de favoris,

192
00:14:18,145 --> 00:14:19,850
maintenant pourquoi voudriez-vous cela ?

193
00:14:19,850 --> 00:14:24,980
Peut-être que du côté du client, vous pourriez avoir un bouton qui, lorsqu'il est

194
00:14:24,980 --> 00:14:31,255
cliqué, vous permettra de cocher un ensemble de plats de la liste des plats,

195
00:14:31,255 --> 00:14:34,710
puis de les ajouter à un seul coup dans votre liste de favoris.

196
00:14:34,710 --> 00:14:37,390
Donc, pour prendre en charge ce genre d'opération,

197
00:14:37,390 --> 00:14:42,295
vous pouvez autoriser une publication à effectuer sur les favoris barre oblique ici.

198
00:14:42,295 --> 00:14:45,641
Maintenant, lorsque la publication est effectuée sur les favoris barre oblique, encore une fois,

199
00:14:45,641 --> 00:14:48,959
vous aurez toujours besoin de l'en-tête d'autorisation.

200
00:14:48,959 --> 00:14:51,460
Mais dans le corps du message,

201
00:14:51,460 --> 00:14:57,493
nous allons stocker la liste des plats comme un tableau de ce format.

202
00:14:57,493 --> 00:15:01,490
Donc, c'est un document JSON ici,

203
00:15:01,490 --> 00:15:04,340
alors laissez-moi m'assurer que dans mon en-tête,

204
00:15:04,340 --> 00:15:08,107
le type de contenu est déjà présent là.

205
00:15:08,107 --> 00:15:14,545
Maintenant, ce document

206
00:15:14,545 --> 00:15:18,735
contiendra un tableau de plats comme celui-ci.

207
00:15:18,735 --> 00:15:22,700
Donc, chaque plat sera identifié en

208
00:15:22,700 --> 00:15:29,860
disant l'ID de soulignement deux-points,

209
00:15:29,860 --> 00:15:34,835
puis ici ils auront l'ID du plat,

210
00:15:34,835 --> 00:15:39,760
et donc ce ne serait rien d'autre qu'un tableau de plats.

211
00:15:39,760 --> 00:15:46,630
Donc, permettez-moi d'ajouter deux plats à ma liste de favoris ici juste pour illustrer le point.

212
00:15:46,630 --> 00:15:51,726
Donc, laissez-moi coller les identifiants de quelques plats dans ce.

213
00:15:51,726 --> 00:15:56,823
Donc, lorsque vous effectuez un post sur l'hôte local 3443/favoris,

214
00:15:56,823 --> 00:16:02,295
voici comment vous composez le corps du message de publication ici.

215
00:16:02,295 --> 00:16:07,497
Ainsi, chaque plat que vous souhaitez ajouter sera inclus dans ce format ici.

216
00:16:07,497 --> 00:16:09,670
Maintenant, lorsque vous les incluez dans ce format,

217
00:16:09,670 --> 00:16:12,425
puis publiez sur ce côté serveur,

218
00:16:12,425 --> 00:16:20,161
le serveur en retour renvoie la liste mise à jour des favoris pour vous.

219
00:16:20,161 --> 00:16:23,395
Ainsi, lorsque vous recevez la liste mise à jour des favoris du côté serveur,

220
00:16:23,395 --> 00:16:26,300
vous verrez que les informations de l'utilisateur sont déjà là,

221
00:16:26,300 --> 00:16:34,685
mais remarquez comment les plats préférés sont stockés dans ce tableau d'ID d'objet plat.

222
00:16:34,685 --> 00:16:38,320
Donc, le premier que nous avions déjà ajouté dans l'opération précédente.

223
00:16:38,320 --> 00:16:39,485
Donc, les deux restants,

224
00:16:39,485 --> 00:16:43,990
nous venons d'ajouter à la liste de nos favoris.

225
00:16:43,990 --> 00:16:47,545
Donc, ces deux ID d'objet sont également ajoutés dans

226
00:16:47,545 --> 00:16:53,110
mon tableau de plats dans mon document favoris ici.

227
00:16:53,110 --> 00:16:56,050
Alors, voilà. Donc, c'est ainsi que vous êtes censé effectuer

228
00:16:56,050 --> 00:17:02,763
la publication des favoris sur le point de terminaison comme ceci.

229
00:17:02,763 --> 00:17:05,340
Maintenant, nous allons à nouveau effectuer une opération get sur

230
00:17:05,340 --> 00:17:10,160
les favoris juste pour voir ce que les fonctionnalités d'opération get pour nous.

231
00:17:10,160 --> 00:17:12,600
Donc, lorsque nous effectuons l'opération GET,

232
00:17:12,600 --> 00:17:21,345
vous remarquerez immédiatement que dans le document des favoris de retour,

233
00:17:21,345 --> 00:17:23,640
vous avez les informations de l'utilisateur là-bas,

234
00:17:23,640 --> 00:17:25,065
puis ci-dessous,

235
00:17:25,065 --> 00:17:29,820
la vaisselle n'est rien d'autre qu'un tableau de documents Json ici,

236
00:17:29,820 --> 00:17:32,670
chacun correspondant à un plat.

237
00:17:32,670 --> 00:17:35,010
Maintenant, cela est automatiquement pris en charge par le

238
00:17:35,010 --> 00:17:38,360
peuplement mongoose que nous avons fait sur le côté serveur.

239
00:17:38,360 --> 00:17:44,525
Donc, toutes ces informations doivent être automatiquement renseignées sur le côté serveur. C'

240
00:17:44,525 --> 00:17:50,430
est donc ainsi que fonctionnent vos opérations de post sur les deux points de terminaison.

241
00:17:50,430 --> 00:17:56,395
Maintenant, laissez-moi vous montrer comment vous allez effectuer une opération DELETE.

242
00:17:56,395 --> 00:18:00,735
Maintenant, pour supprimer un plat spécifique.

243
00:18:00,735 --> 00:18:08,193
Laissez-moi donc effectuer une opération de suppression sur un point de terminaison spécifique.

244
00:18:08,193 --> 00:18:13,095
Donc, nous allons revenir à ce point de terminaison,

245
00:18:13,095 --> 00:18:16,470
puis laissez-moi simplement copier l'un de ceux-ci,

246
00:18:16,470 --> 00:18:18,985
et puis je vais supprimer l'un des plats.

247
00:18:18,985 --> 00:18:22,585
Donc, pour effectuer l'opération de suppression sur l'un des plats,

248
00:18:22,585 --> 00:18:23,750
bien sûr, comme vous le voyez,

249
00:18:23,750 --> 00:18:26,453
nous n'avons pas encore besoin du corps,

250
00:18:26,453 --> 00:18:29,485
et nous n'avons pas besoin du contenu ici.

251
00:18:29,485 --> 00:18:35,580
Tout ce que nous devons faire est d'effectuer une opération de suppression sur ce point de terminaison.

252
00:18:35,580 --> 00:18:43,125
Donc, ici, vous voyez que je fais localhost : 3443/favorites/ et puis l'ID du plat.

253
00:18:43,125 --> 00:18:46,231
Et puis laissez-moi poster ceci.

254
00:18:46,231 --> 00:18:51,760
Donc, quand je supprime un plat spécifique de ma liste de favoris,

255
00:18:51,760 --> 00:18:53,695
vous remarquez immédiatement que

256
00:18:53,695 --> 00:19:01,555
ma liste mise à jour de favoris est renvoyée au côté client par le serveur.

257
00:19:01,555 --> 00:19:03,010
Donc, vous avez l'utilisateur ici,

258
00:19:03,010 --> 00:19:06,220
mais notez que dans le tableau de plats je n'ai que deux plats maintenant.

259
00:19:06,220 --> 00:19:11,105
Celui que je viens de supprimer est parti de cette liste de plats.

260
00:19:11,105 --> 00:19:12,820
Donc, si vous effectuez un GET maintenant,

261
00:19:12,820 --> 00:19:18,265
votre gamme de plats sera continuellement à plats là-bas.

262
00:19:18,265 --> 00:19:24,635
Maintenant, supposons que j'effectue une DELETE sur les favoris ici.

263
00:19:24,635 --> 00:19:30,565
Donc, si j'effectue DELETE sur le point de terminaison des favoris lui-même,

264
00:19:30,565 --> 00:19:34,540
alors ce qu'il va faire est de supprimer tous mes favoris et

265
00:19:34,540 --> 00:19:39,096
aussi supprimer mon document favoris complètement du côté serveur.

266
00:19:39,096 --> 00:19:42,250
Donc, laissez-moi effectuer cette opération de suppression du côté serveur,

267
00:19:42,250 --> 00:19:47,000
puis il retournera le fait qu'il a supprimé ce document particulier,

268
00:19:47,000 --> 00:19:49,675
donc il retourne juste ce document de toute façon.

269
00:19:49,675 --> 00:19:54,670
Mais maintenant, si j'effectue une opération GET sur ma liste de favoris,

270
00:19:54,670 --> 00:19:57,580
je vais récupérer un null là. Ce

271
00:19:57,580 --> 00:20:00,880
qui signifie que je n'ai pas ce document côté serveur.

272
00:20:00,880 --> 00:20:03,800
Donc, le document des favoris est complètement disparu,

273
00:20:03,800 --> 00:20:09,352
lorsque j'effectue l'opération DELETE sur la colonne hôte locale trois à partir des favoris précédemment barre oblique.

274
00:20:09,352 --> 00:20:12,805
Maintenant encore, lorsque j'ajoute un nouveau plat à ma liste de favoris,

275
00:20:12,805 --> 00:20:16,580
mon document de favoris sera configuré à nouveau.

276
00:20:16,580 --> 00:20:21,880
C' est parfaitement bien pour nous d'opérer.

277
00:20:21,880 --> 00:20:26,440
Donc, avec cette démonstration, je vous ai montré

278
00:20:26,440 --> 00:20:32,680
toutes les différentes opérations que vous devez effectuer sur votre serveur.

279
00:20:32,680 --> 00:20:36,670
Toutes les différentes opérations sur les différents points de terminaison d'itinéraire

280
00:20:36,670 --> 00:20:40,754
que vous devez effectuer ou implémenter côté serveur.

281
00:20:40,754 --> 00:20:42,265
Maintenant que vous avez vu

282
00:20:42,265 --> 00:20:47,720
toutes les différentes opérations que le côté serveur devrait prendre en charge sur les favoris barre oblique,

283
00:20:47,720 --> 00:20:48,895
et les favoris barre

284
00:20:48,895 --> 00:20:50,995
oblique, les points de terminaison ID plat,

285
00:20:50,995 --> 00:20:56,033
laissez-moi énumérer les trois tâches que vous devez effectuer dans cette affectation.

286
00:20:56,033 --> 00:21:03,340
La première tâche bien sûr est d'implémenter le schéma et le modèle préférés.

287
00:21:03,340 --> 00:21:09,995
Ceci, vous allez implémenter dans le dossier des modèles dans un fichier appelé NodeJS favori.

288
00:21:09,995 --> 00:21:12,460
Là, vous allez implémenter le schéma favori.

289
00:21:12,460 --> 00:21:13,952
Rappelez-vous que le schéma favori stockera

290
00:21:13,952 --> 00:21:19,720
la référence à l'ID d'objet document de l'utilisateur

291
00:21:19,720 --> 00:21:26,212
et un tableau d'ID d'objet de document plats.

292
00:21:26,212 --> 00:21:29,440
C' est le gros indice sur la façon dont vous êtes censé

293
00:21:29,440 --> 00:21:33,355
concevoir le schéma et le modèle pour vos favoris.

294
00:21:33,355 --> 00:21:39,190
La deuxième tâche de votre affectation consiste à implémenter les

295
00:21:39,190 --> 00:21:46,555
opérations GET, POST et DELETE sur le point de terminaison des favoris de barre oblique.

296
00:21:46,555 --> 00:21:49,245
GET vous obtiendra toute la liste des favoris,

297
00:21:49,245 --> 00:21:52,225
remplis automatiquement par le remplissage de Mongo,

298
00:21:52,225 --> 00:21:58,360
le POST devrait contenir une liste de plats comme spécifié

299
00:21:58,360 --> 00:22:04,425
dans le format que je viens de vous montrer dans le corps du message POST.

300
00:22:04,425 --> 00:22:08,695
Et donc un tas de plats seront ajoutés dans votre liste de favoris,

301
00:22:08,695 --> 00:22:11,800
et l'opération DELETE sur le point de terminaison des favoris barre oblique

302
00:22:11,800 --> 00:22:16,215
supprimera votre document favoris complètement du côté serveur.

303
00:22:16,215 --> 00:22:22,225
Maintenant, si vous effectuez une opération POST sur barre oblique préférée ID plat,

304
00:22:22,225 --> 00:22:27,405
alors le plat particulier sera ajouté dans votre liste de favoris.

305
00:22:27,405 --> 00:22:29,635
Si votre document favori n'existe pas,

306
00:22:29,635 --> 00:22:32,455
vous devez évidemment créer ce document favori.

307
00:22:32,455 --> 00:22:36,250
Cela fait aussi partie de cette opération POST.

308
00:22:36,250 --> 00:22:39,760
Donc, si à un moment quelconque vous trouvez que le document favori n'existe pas,

309
00:22:39,760 --> 00:22:41,770
vous devez d'abord créer le document favori

310
00:22:41,770 --> 00:22:44,550
, puis ajouter ce plat dans le document favori.

311
00:22:44,550 --> 00:22:47,155
C' est donc un point important à noter.

312
00:22:47,155 --> 00:22:51,305
Lorsque vous effectuez un POST sur le point de terminaison des favoris de barre oblique,

313
00:22:51,305 --> 00:22:53,290
si le document favori n'existe pas,

314
00:22:53,290 --> 00:22:58,150
vous devez créer un document favori, puis ajouter les plats à votre document favori.

315
00:22:58,150 --> 00:22:59,410
S' il existe déjà,

316
00:22:59,410 --> 00:23:02,765
vous ne mettez à jour que ce document favori.

317
00:23:02,765 --> 00:23:08,480
C' est donc un indice de plus sur la façon dont vous êtes censé implémenter les opérations POST.

318
00:23:08,480 --> 00:23:13,735
Si vous effectuez une opération DELETE sur l'ID de la barre oblique des favoris

319
00:23:13,735 --> 00:23:18,640
, ce plat spécifique sera supprimé de la liste des favoris.

320
00:23:18,640 --> 00:23:23,125
Maintenant, lors de l'exécution des opérations POST et DELETE,

321
00:23:23,125 --> 00:23:28,110
vous devez vous assurer que vous n'ajouterez pas de doublons à l'ID plat.

322
00:23:28,110 --> 00:23:33,165
Donc, avant d'ajouter un ID d'objet plat à la liste des plats,

323
00:23:33,165 --> 00:23:39,490
vérifiez toujours si l'ID de plat existe déjà dans la liste des plats.

324
00:23:39,490 --> 00:23:45,430
Maintenant, c'est là que vous pouvez utiliser la méthode indexOf tableau pour vérifier

325
00:23:45,430 --> 00:23:52,395
si un ID de document existe déjà dans un tableau de documents.

326
00:23:52,395 --> 00:23:56,725
C' est donc un autre indice important sur la façon dont vous allez implémenter cette partie.

327
00:23:56,725 --> 00:23:59,610
Et la troisième tâche bien sûr est de monter

328
00:23:59,610 --> 00:24:05,725
le routeur préféré sur les points de terminaison favoris slash en mettant à jour le fichier app.js.

329
00:24:05,725 --> 00:24:08,490
Le routeur favori lui-même sera implémenté dans

330
00:24:08,490 --> 00:24:13,710
le dossier routes dans le fichier favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Donc, avec cela, j'ai décrit ce que vous êtes

332
00:24:17,010 --> 00:24:21,010
censé implémenter dans la quatrième et dernière affectation.

333
00:24:21,010 --> 00:24:24,015
Et j'espère que cette affectation vous aidera

334
00:24:24,015 --> 00:24:27,930
à consolider tout ce que vous avez appris dans le cours,

335
00:24:27,930 --> 00:24:32,685
de la conception d'un routeur express,

336
00:24:32,685 --> 00:24:40,720
à faire MongoDB et aussi le schéma et les modèles de Mongo,

337
00:24:40,720 --> 00:24:45,095
et également effectuer l'authentification utilisateur appropriée.

338
00:24:45,095 --> 00:24:47,685
Et comme je l'ai mentionné à nouveau,

339
00:24:47,685 --> 00:24:52,965
seul un utilisateur authentifié aura accès à sa liste de favoris.

340
00:24:52,965 --> 00:24:55,920
Même l'opération GET ne peut être effectuée que par

341
00:24:55,920 --> 00:25:00,750
un utilisateur authentifié sur le point de terminaison des favoris de barre oblique.

342
00:25:00,750 --> 00:25:05,640
Et vous ne feriez que chercher les favoris pour cet utilisateur particulier.

343
00:25:05,640 --> 00:25:12,000
Vous ne pouvez pas autoriser un autre utilisateur à accéder aux favoris d'un autre utilisateur.

344
00:25:12,000 --> 00:25:15,840
Encore une fois, cela vous indique également comment vous êtes censé effectuer

345
00:25:15,840 --> 00:25:20,890
l'authentification sur les différents points de terminaison de route.

346
00:25:20,890 --> 00:25:27,595
Avec cela, je complète la description des tâches dans la quatrième affectation.

347
00:25:27,595 --> 00:25:31,790
Amusez-vous à remplir cette mission.