﻿1
00:00:01,090 --> 00:00:03,370
‫Enseignant : Commençons maintenant à créer des

2
00:00:03,370 --> 00:00:06,903
‫documents, à tester le modèle et à vraiment commencer à utiliser Mongoose.

3
00:00:08,510 --> 00:00:10,570
‫Et je suis vraiment excité à

4
00:00:10,570 --> 00:00:12,823
‫propos de cette vidéo, alors commençons vraiment ici.

5
00:00:14,130 --> 00:00:17,143
‫Donc, ce que nous allons faire, c'est créer une nouvelle variable,

6
00:00:19,000 --> 00:00:21,373
‫et je vais l'appeler testTour, et ce sera

7
00:00:22,510 --> 00:00:24,400
‫un nouveau document créé à

8
00:00:24,400 --> 00:00:26,500
‫partir du modèle de tournée que nous

9
00:00:26,500 --> 00:00:28,460
‫avons créé lors de la dernière leçon.

10
00:00:28,460 --> 00:00:29,520
‫Donc, ce

11
00:00:29,520 --> 00:00:33,110
‫que nous allons faire, c'est dire nouveau Tour,

12
00:00:33,110 --> 00:00:36,443
‫puis passer un objet avec les données.

13
00:00:38,020 --> 00:00:39,913
‫Alors nommez, disons, encore une

14
00:00:41,920 --> 00:00:44,100
‫fois, « The Forest Hiker », comme

15
00:00:44,100 --> 00:00:46,463
‫nous l'avons utilisé auparavant, puis la note,

16
00:00:47,630 --> 00:00:49,513
‫disons 4. 7,

17
00:00:53,157 --> 00:00:54,740
‫puis le

18
00:00:56,010 --> 00:00:58,643
‫prix, disons 497, d'accord ?

19
00:00:59,690 --> 00:01:02,570
‫Donc, il s'agit, encore une fois, d'un nouveau document

20
00:01:02,570 --> 00:01:04,890
‫que nous avons créé à partir d'un

21
00:01:04,890 --> 00:01:06,610
‫modèle de tournée, ou de

22
00:01:06,610 --> 00:01:08,830
‫constructeurs de fonctions, et comme je l'ai

23
00:01:08,830 --> 00:01:11,390
‫déjà dit, il s'agit en quelque sorte d'utiliser

24
00:01:11,390 --> 00:01:14,660
‫des constructeurs de fonctions JavaScript, ou des classes JavaScript si vous

25
00:01:14,660 --> 00:01:16,440
‫utilisez ES6, essentiellement pour créer

26
00:01:16,440 --> 00:01:18,370
‫de nouveaux objets à partir d'une

27
00:01:18,370 --> 00:01:21,020
‫classe, n'est-ce pas, et c'est donc exactement la même

28
00:01:21,020 --> 00:01:22,660
‫syntaxe, en fait, nous

29
00:01:22,660 --> 00:01:24,780
‫utilisons donc le mot-clé name, puis le

30
00:01:24,780 --> 00:01:27,730
‫nom de la classe dans ES6, comme ça, d'accord ?

31
00:01:27,730 --> 00:01:29,930
‫Maintenant, ici, ce n'est pas exactement la

32
00:01:29,930 --> 00:01:31,890
‫même chose, mais cette analogie

33
00:01:31,890 --> 00:01:33,890
‫est utile pour comprendre comment cela fonctionne.

34
00:01:33,890 --> 00:01:36,710
‫Ainsi, ce document de visite de test que nous venons

35
00:01:36,710 --> 00:01:39,380
‫de créer est une instance du modèle de visite,

36
00:01:39,380 --> 00:01:41,670
‫et il contient donc maintenant quelques méthodes que

37
00:01:41,670 --> 00:01:43,010
‫nous pouvons utiliser pour

38
00:01:43,010 --> 00:01:44,873
‫interagir avec la base de données.

39
00:01:45,890 --> 00:01:47,750
‫Alors laisse-moi te montrer ça.

40
00:01:47,750 --> 00:01:52,030
‫Nous pouvons donc maintenant dire testTour. save, et cela l'enregistrera ensuite

41
00:01:52,030 --> 00:01:53,550
‫dans la collection

42
00:01:53,550 --> 00:01:56,810
‫de visites de la base de données, d'accord, et

43
00:01:56,810 --> 00:01:59,060
‫c'est vraiment aussi simple que cela.

44
00:01:59,060 --> 00:02:01,700
‫Encore une fois, nous avons notre instance de document

45
00:02:01,700 --> 00:02:03,730
‫qui est testTour, et là-bas,

46
00:02:03,730 --> 00:02:05,870
‫nous pouvons ensuite appeler la méthode save

47
00:02:05,870 --> 00:02:08,653
‫afin d'enregistrer le document dans la base de données.

48
00:02:09,490 --> 00:02:11,310
‫Maintenant, cette sauvegarde ici renverra

49
00:02:11,310 --> 00:02:13,453
‫alors une promesse que nous pourrons ensuite consommer.

50
00:02:15,010 --> 00:02:17,920
‫Donc pour l'instant, utilisons alors pour cela, et à

51
00:02:17,920 --> 00:02:19,797
‫l'avenir, nous utiliserons en fait async

52
00:02:19,797 --> 00:02:23,340
‫wait afin de consommer ces promesses, mais pour l'instant, gardons les

53
00:02:23,340 --> 00:02:24,830
‫choses simples et ne

54
00:02:24,830 --> 00:02:26,880
‫créons plus de fonctions, et donc à

55
00:02:26,880 --> 00:02:28,750
‫la place, nous sommes en utilisant

56
00:02:28,750 --> 00:02:30,550
‫simplement la méthode then ici.

57
00:02:30,550 --> 00:02:33,010
‫Donc ici, nous avons accès au document qui vient

58
00:02:33,010 --> 00:02:35,123
‫d'être enregistré dans la base de données.

59
00:02:36,920 --> 00:02:39,850
‫Donc, fondamentalement, la valeur de résultat de la promesse

60
00:02:39,850 --> 00:02:42,180
‫renvoyée par la méthode save est le

61
00:02:42,180 --> 00:02:45,690
‫document final tel qu'il se trouve dans la base de données.

62
00:02:45,690 --> 00:02:47,770
‫Et donc maintenant, allons de

63
00:02:47,770 --> 00:02:51,293
‫l'avant et enregistrons le document sur la console, d'accord ?

64
00:02:52,290 --> 00:02:54,620
‫Maintenant, d'un autre côté, l'enregistrement de

65
00:02:54,620 --> 00:02:57,030
‫ce document dans la base de données peut

66
00:02:57,030 --> 00:02:59,749
‫également mal tourner, alors attrapons cette erreur, d'accord ?

67
00:02:59,749 --> 00:03:02,100
‫Donc, comme auparavant, nous avons utilisé la méthode

68
00:03:02,100 --> 00:03:05,400
‫catch afin de détecter toute erreur potentielle. Ainsi, s'il y a

69
00:03:05,400 --> 00:03:07,460
‫une erreur lors de l'enregistrement du document

70
00:03:07,460 --> 00:03:09,430
‫dans la base de données, nous

71
00:03:09,430 --> 00:03:11,130
‫pourrons détecter cette erreur ici

72
00:03:11,130 --> 00:03:12,223
‫dans cette méthode.

73
00:03:14,820 --> 00:03:17,510
‫Bon, donc en gros, c'est ici dans cette fonction

74
00:03:17,510 --> 00:03:19,103
‫que je passe en catch.

75
00:03:21,570 --> 00:03:24,710
‫D'accord, pour l'instant, tout ce que je veux faire, c'est aussi

76
00:03:24,710 --> 00:03:26,623
‫de le connecter à la console.

77
00:03:27,660 --> 00:03:30,470
‫Disons « Erreur », ajoutez quelques emojis ici

78
00:03:30,470 --> 00:03:32,800
‫pour le rendre plus visible

79
00:03:32,800 --> 00:03:35,154
‫dans la console, puis nous pouvons transmettre

80
00:03:35,154 --> 00:03:37,990
‫un deuxième argument dans le journal de la

81
00:03:37,990 --> 00:03:40,490
‫console, qui sera alors l'erreur, d'accord ?

82
00:03:40,490 --> 00:03:41,323
‫Es-tu prêt?

83
00:03:41,323 --> 00:03:43,170
‫Ensuite, sauvegardons-le maintenant, et

84
00:03:43,170 --> 00:03:46,260
‫cela exécutera ensuite le code qui se trouve ici,

85
00:03:46,260 --> 00:03:49,520
‫donc en gros, créez cette nouvelle visite et essayez

86
00:03:49,520 --> 00:03:53,090
‫de l'enregistrer immédiatement dans la base de données, d'accord ?

87
00:03:53,090 --> 00:03:54,410
‫Alors, faisons une sauvegarde maintenant,

88
00:03:54,410 --> 00:03:56,433
‫et voyons ce qui se passe dans la

89
00:03:58,170 --> 00:03:59,733
‫console, et en effet, c'est parti.

90
00:04:01,260 --> 00:04:03,700
‫Vous voyez donc que c'est le

91
00:04:03,700 --> 00:04:07,580
‫document qui vient d'être enregistré dans notre base de données, d'accord ?

92
00:04:07,580 --> 00:04:10,350
‫Donc, ici, nous voyons également l'ID,

93
00:04:10,350 --> 00:04:13,451
‫et il est simplement généré automatiquement par

94
00:04:13,451 --> 00:04:16,770
‫MongoDB, et c'est simplement l'identifiant unique du document.

95
00:04:16,770 --> 00:04:19,940
‫Ainsi, tout comme cela s'est produit auparavant dans la

96
00:04:19,940 --> 00:04:22,800
‫section MongoDB, nous obtenons automatiquement cet identifiant unique

97
00:04:22,800 --> 00:04:24,290
‫pour le nouvel objet.

98
00:04:24,290 --> 00:04:26,960
‫Ensuite, Mongoose ajoute également automatiquement ce V

99
00:04:26,960 --> 00:04:29,800
‫et le met à zéro ici, mais ce

100
00:04:29,800 --> 00:04:32,770
‫n'est pas vraiment important à ce stade, d'accord ?

101
00:04:32,770 --> 00:04:35,090
‫Ce qui compte ici, c'est

102
00:04:35,090 --> 00:04:38,510
‫que notre nouveau document a été ajouté avec succès à

103
00:04:38,510 --> 00:04:40,920
‫la base de données, et juste pour

104
00:04:40,920 --> 00:04:45,570
‫nous en assurer, passons à Compass et examinons notre base de données là-bas.

105
00:04:45,570 --> 00:04:48,150
‫Donc ici, nous avons la collection de

106
00:04:48,150 --> 00:04:51,850
‫visites, puis nous avons le document que nous venons de créer.

107
00:04:51,850 --> 00:04:54,940
‫Il a donc exactement le même ID, et bien sûr toutes

108
00:04:54,940 --> 00:04:57,410
‫les autres données que nous y avons insérées,

109
00:04:57,410 --> 00:04:59,230
‫et c'est donc bien l'objet que

110
00:04:59,230 --> 00:05:00,543
‫nous venons de créer.

111
00:05:01,550 --> 00:05:03,960
‫Et gardez à l'esprit que nous avions en

112
00:05:03,960 --> 00:05:05,830
‫fait supprimé la collection de visites

113
00:05:05,830 --> 00:05:07,800
‫ici dans l'une des vidéos précédentes,

114
00:05:07,800 --> 00:05:10,010
‫à droite, mais Mongoose a automatiquement créé

115
00:05:10,010 --> 00:05:12,070
‫cette nouvelle collection ici dès que nous

116
00:05:12,070 --> 00:05:13,960
‫avons créé le premier document utilisant

117
00:05:13,960 --> 00:05:15,730
‫le modèle de visite, et

118
00:05:15,730 --> 00:05:17,250
‫donc ce nom

119
00:05:17,250 --> 00:05:19,820
‫ici vient essentiellement à partir de ce modèle de

120
00:05:19,820 --> 00:05:23,730
‫tournée, il nous donne simplement ce nom pluriel, tout comme nous l'avions auparavant.

121
00:05:23,730 --> 00:05:26,870
‫Parfait, nous venons de faire vraiment interagir notre application

122
00:05:26,870 --> 00:05:29,660
‫express avec une base de données MongoDB pour

123
00:05:29,660 --> 00:05:31,060
‫la toute première fois,

124
00:05:31,060 --> 00:05:34,690
‫et c'est en fait vraiment incroyable, si vous voulez mon avis.

125
00:05:34,690 --> 00:05:35,900
‫Cela signifie donc qu'à l'heure

126
00:05:35,900 --> 00:05:39,343
‫actuelle, nous sommes en mesure de créer des documents directement à partir de notre code.

127
00:05:40,560 --> 00:05:43,700
‫Donc, cela me rend vraiment heureux, et essayons donc

128
00:05:43,700 --> 00:05:45,670
‫à nouveau avec un autre,

129
00:05:45,670 --> 00:05:48,140
‫d'accord, mais en fait avant de faire

130
00:05:48,140 --> 00:05:49,930
‫cela, je veux simplement recharger

131
00:05:49,930 --> 00:05:52,630
‫ce fichier ici qui essaiera ensuite d'enregistrer à

132
00:05:52,630 --> 00:05:55,710
‫nouveau ce document ici dans la base de données

133
00:05:55,710 --> 00:05:58,400
‫, à droite, simplement parce que tout ce

134
00:05:58,400 --> 00:06:00,183
‫code ici est

135
00:06:00,183 --> 00:06:03,350
‫exécuté à chaque fois que nous sauvegardons le fichier.

136
00:06:03,350 --> 00:06:05,945
‫Maintenant, essayons de deviner ce qui va se passer

137
00:06:05,945 --> 00:06:07,730
‫dès que j'enregistre ce fichier.

138
00:06:07,730 --> 00:06:08,563
‫Peux-tu deviner?

139
00:06:09,930 --> 00:06:11,610
‫Attendons, et en

140
00:06:11,610 --> 00:06:14,160
‫effet nous obtenons quelque chose de

141
00:06:14,160 --> 00:06:16,000
‫différent maintenant, nous obtenons

142
00:06:16,000 --> 00:06:18,260
‫une erreur ici, et l'erreur que

143
00:06:18,260 --> 00:06:20,940
‫nous voyons est cette collection d'erreurs de

144
00:06:20,940 --> 00:06:25,940
‫clé en double, qui indique ici cette clé en double, d'accord ?

145
00:06:26,210 --> 00:06:28,520
‫Nous avons donc déjà une tournée avec le

146
00:06:28,520 --> 00:06:30,680
‫nom de « Forest Hiker »,

147
00:06:30,680 --> 00:06:32,843
‫et maintenant nous essayons d'en créer une

148
00:06:32,843 --> 00:06:35,170
‫autre, et puisque dans notre schéma, nous avons

149
00:06:35,170 --> 00:06:37,817
‫cette propriété unique ici, ce n'est pas autorisé, vous

150
00:06:37,817 --> 00:06:39,370
‫vous en souvenez ?

151
00:06:39,370 --> 00:06:40,852
‫Nous avons donc défini

152
00:06:40,852 --> 00:06:43,250
‫cet unique ici sur true afin qu'il soit

153
00:06:43,250 --> 00:06:45,810
‫impossible d'avoir deux tournées avec le même nom,

154
00:06:45,810 --> 00:06:48,743
‫et nous venons donc de prouver que cela fonctionne réellement.

155
00:06:49,580 --> 00:06:51,990
‫Très bien, alors remplaçons simplement le code que

156
00:06:51,990 --> 00:06:53,370
‫nous avons ici afin

157
00:06:53,370 --> 00:06:56,173
‫de créer une nouvelle tournée avec un autre nom.

158
00:06:57,060 --> 00:06:59,917
‫Appelons-le « The Park Camper »

159
00:07:01,640 --> 00:07:04,560
‫et supprimons le prix ainsi que

160
00:07:04,560 --> 00:07:05,943
‫la note.

161
00:07:06,890 --> 00:07:09,403
‫Alors, pouvez-vous deviner ce qui va se passer maintenant?

162
00:07:10,280 --> 00:07:12,450
‫Soyons clairs, ou en fait il l'a

163
00:07:12,450 --> 00:07:14,370
‫déjà chargé car dès que

164
00:07:14,370 --> 00:07:17,190
‫j'ai cliqué ici, il a ensuite enregistré le fichier,

165
00:07:17,190 --> 00:07:20,560
‫et donc, oui, nous venons d'avoir une autre erreur, vous pouvez

166
00:07:20,560 --> 00:07:22,530
‫donc le voir ici, ce qui

167
00:07:22,530 --> 00:07:24,620
‫signifie que nous n'avons pas réussi

168
00:07:24,620 --> 00:07:27,170
‫à enregistrer ce document dans la base de

169
00:07:27,170 --> 00:07:30,200
‫données, et ce que nous avons ici maintenant, c'est une

170
00:07:30,200 --> 00:07:32,090
‫erreur de validation provenant

171
00:07:32,090 --> 00:07:34,710
‫du champ de prix disant "Un tour doit

172
00:07:34,710 --> 00:07:36,670
‫avoir un prix", et c'est donc

173
00:07:36,670 --> 00:07:39,970
‫exactement le message que nous avons spécifié ici, n'est-ce pas ?

174
00:07:39,970 --> 00:07:42,160
‫Tout simplement parce que dans cette ligne

175
00:07:42,160 --> 00:07:45,320
‫nous avons dit que le prix est un champ obligatoire, d'accord,

176
00:07:45,320 --> 00:07:47,050
‫et donc ce requis,

177
00:07:47,050 --> 00:07:49,750
‫comme je l'ai mentionné, est un validateur, et donc

178
00:07:49,750 --> 00:07:52,260
‫ici, nous obtenons alors une erreur de validation.

179
00:07:52,260 --> 00:07:53,520
‫Et donc

180
00:07:55,860 --> 00:08:00,050
‫maintenant corrigeons cela et spécifions le prix, disons 997, et

181
00:08:00,050 --> 00:08:01,460
‫donnons-lui une autre sauvegarde.

182
00:08:01,460 --> 00:08:03,310
‫Maintenant, cette fois, cela devrait fonctionner

183
00:08:03,310 --> 00:08:06,010
‫car la notation n'est pas requise, et donc

184
00:08:06,010 --> 00:08:07,780
‫lorsque nous descendons ici,

185
00:08:07,780 --> 00:08:09,930
‫notre document a été enregistré avec

186
00:08:09,930 --> 00:08:13,060
‫succès dans la base de données, vous voyez ?

187
00:08:13,060 --> 00:08:15,450
‫Maintenant, nous n'avons pas spécifié la note ici dans cette tournée d'essai,

188
00:08:15,450 --> 00:08:19,240
‫mais vous voyez qu'elle est toujours de 4. 5, et c'est parce que nous

189
00:08:19,240 --> 00:08:20,800
‫avons défini la valeur par

190
00:08:20,800 --> 00:08:23,770
‫défaut à 4. 5 ici.

191
00:08:23,770 --> 00:08:24,750
‫Donc, je voulais

192
00:08:24,750 --> 00:08:26,763
‫juste vous montrer cela ici dans cet exemple rapide.

193
00:08:27,770 --> 00:08:30,810
‫Bon, nous avons encore réussi, alors revenons

194
00:08:30,810 --> 00:08:33,210
‫ici, rechargez, vous cliquez sur ce

195
00:08:33,210 --> 00:08:35,690
‫bouton, et en effet nous avons

196
00:08:35,690 --> 00:08:37,840
‫maintenant nos deux tournées.

197
00:08:37,840 --> 00:08:40,930
‫Génial, et je me souviens à quel point j'ai été

198
00:08:40,930 --> 00:08:43,370
‫formidable lorsque cela a fonctionné la première

199
00:08:43,370 --> 00:08:46,250
‫fois lorsque j'ai commencé à apprendre Express et Mongo,

200
00:08:46,250 --> 00:08:48,120
‫et comment créer ces applications,

201
00:08:48,120 --> 00:08:50,240
‫et j'espère donc vraiment que vous ressentez

202
00:08:50,240 --> 00:08:52,130
‫la même chose en ce

203
00:08:52,130 --> 00:08:54,100
‫moment, car vous venez de créer

204
00:08:54,100 --> 00:08:56,033
‫vos tout premiers documents avec Express

205
00:08:56,033 --> 00:08:57,823
‫et, bien sûr, MongoDB.

