﻿1
00:00:01,090 --> 00:00:03,370
‫Lehrer: Beginnen wir nun damit, Dokumente

2
00:00:03,370 --> 00:00:06,903
‫zu erstellen, das Modell zu testen und Mongoose wirklich zu verwenden.

3
00:00:08,510 --> 00:00:10,570
‫Und ich bin wirklich aufgeregt über

4
00:00:10,570 --> 00:00:12,823
‫dieses Video, also lasst uns hier wirklich loslegen.

5
00:00:14,130 --> 00:00:17,143
‫Wir werden also eine neue Variable erstellen, und ich

6
00:00:19,000 --> 00:00:21,373
‫nenne sie testTour, und dies wird ein

7
00:00:22,510 --> 00:00:24,400
‫neues Dokument sein, das aus

8
00:00:24,400 --> 00:00:26,500
‫dem Tourmodell erstellt wird, das wir

9
00:00:26,500 --> 00:00:28,460
‫in der letzten Vorlesung erstellt haben.

10
00:00:28,460 --> 00:00:29,520
‫Also

11
00:00:29,520 --> 00:00:33,110
‫sagen wir neue Tour und geben dann

12
00:00:33,110 --> 00:00:36,443
‫ein Objekt mit den Daten ein.

13
00:00:38,020 --> 00:00:39,913
‫Nennen wir also noch einmal

14
00:00:41,920 --> 00:00:44,100
‫'Der Waldwanderer', so wie wir es

15
00:00:44,100 --> 00:00:46,463
‫zuvor verwendet haben, dann die Bewertung, sagen

16
00:00:47,630 --> 00:00:49,513
‫wir 4. 7,

17
00:00:53,157 --> 00:00:54,740
‫und dann der

18
00:00:56,010 --> 00:00:58,643
‫Preis, sagen wir 497, okay?

19
00:00:59,690 --> 00:01:02,570
‫Dies ist also wieder ein neues Dokument,

20
00:01:02,570 --> 00:01:04,890
‫das wir aus einem Tourmodell

21
00:01:04,890 --> 00:01:06,610
‫oder Funktionskonstruktoren erstellt

22
00:01:06,610 --> 00:01:08,830
‫haben, und wie ich bereits

23
00:01:08,830 --> 00:01:11,390
‫sagte, verwenden wir JavaScript-Funktionskonstruktoren oder JavaScript-Klassen,

24
00:01:11,390 --> 00:01:14,660
‫wenn Sie ES6 verwenden, um Erstellen Sie neue

25
00:01:14,660 --> 00:01:16,440
‫Objekte aus einer Klasse,

26
00:01:16,440 --> 00:01:18,370
‫richtig, und das ist

27
00:01:18,370 --> 00:01:21,020
‫genau die gleiche Syntax, also verwenden

28
00:01:21,020 --> 00:01:22,660
‫wir das

29
00:01:22,660 --> 00:01:24,780
‫Schlüsselwort name und dann den

30
00:01:24,780 --> 00:01:27,730
‫Klassennamen in ES6, einfach so, in Ordnung?

31
00:01:27,730 --> 00:01:29,930
‫Hier ist es nicht genau dasselbe, aber

32
00:01:29,930 --> 00:01:31,890
‫diese Analogie ist hilfreich,

33
00:01:31,890 --> 00:01:33,890
‫um zu verstehen, wie dies funktioniert.

34
00:01:33,890 --> 00:01:36,710
‫Dieses Testtourdokument, das wir gerade erstellt haben, ist

35
00:01:36,710 --> 00:01:39,380
‫also eine Instanz des Tourmodells und enthält

36
00:01:39,380 --> 00:01:41,670
‫jetzt einige Methoden, die wir verwenden

37
00:01:41,670 --> 00:01:43,010
‫können, um

38
00:01:43,010 --> 00:01:44,873
‫mit der Datenbank zu interagieren.

39
00:01:45,890 --> 00:01:47,750
‫Also lass mich dir das zeigen.

40
00:01:47,750 --> 00:01:52,030
‫Also können wir jetzt testTour sagen. save, und das wird

41
00:01:52,030 --> 00:01:53,550
‫dann in

42
00:01:53,550 --> 00:01:56,810
‫der Tour-Sammlung in der Datenbank gespeichert, okay,

43
00:01:56,810 --> 00:01:59,060
‫und so einfach ist es.

44
00:01:59,060 --> 00:02:01,700
‫Wir haben also wieder unsere Dokumentinstanz, die

45
00:02:01,700 --> 00:02:03,730
‫testTour ist, und dort können

46
00:02:03,730 --> 00:02:05,870
‫wir dann die Methode save aufrufen,

47
00:02:05,870 --> 00:02:08,653
‫um das Dokument in der Datenbank zu speichern.

48
00:02:09,490 --> 00:02:11,310
‫Nun, dieses Speichern hier wird dann

49
00:02:11,310 --> 00:02:13,453
‫ein Versprechen zurückgeben, das wir dann konsumieren können.

50
00:02:15,010 --> 00:02:17,920
‫Verwenden wir also für den Moment dann dafür, und

51
00:02:17,920 --> 00:02:19,797
‫in Zukunft werden wir tatsächlich asynchrones

52
00:02:19,797 --> 00:02:23,340
‫Awarten verwenden, um diese Versprechen zu konsumieren, aber für den Moment

53
00:02:23,340 --> 00:02:24,830
‫halten wir es

54
00:02:24,830 --> 00:02:26,880
‫einfach und erstellen keine weiteren Funktionen,

55
00:02:26,880 --> 00:02:28,750
‫und stattdessen sind wir Verwenden Sie

56
00:02:28,750 --> 00:02:30,550
‫hier einfach die Methode then.

57
00:02:30,550 --> 00:02:33,010
‫Hier drin erhalten wir also Zugriff auf das Dokument,

58
00:02:33,010 --> 00:02:35,123
‫das gerade in der Datenbank gespeichert wurde.

59
00:02:36,920 --> 00:02:39,850
‫Der Ergebniswert des Promises, den die Methode save

60
00:02:39,850 --> 00:02:42,180
‫zurückgibt, ist also im Grunde

61
00:02:42,180 --> 00:02:45,690
‫das letzte Dokument, wie es in der Datenbank vorliegt.

62
00:02:45,690 --> 00:02:47,770
‫Lassen Sie uns nun

63
00:02:47,770 --> 00:02:51,293
‫das Dokument in der Konsole protokollieren, in Ordnung?

64
00:02:52,290 --> 00:02:54,620
‫Auf der anderen Seite kann das

65
00:02:54,620 --> 00:02:57,030
‫Speichern dieses Dokuments in der Datenbank auch

66
00:02:57,030 --> 00:02:59,749
‫schief gehen, also fangen wir diesen Fehler ab, okay?

67
00:02:59,749 --> 00:03:02,100
‫Genau wie zuvor haben wir die Methode

68
00:03:02,100 --> 00:03:05,400
‫catch verwendet, um mögliche Fehler abzufangen. Wenn also beim

69
00:03:05,400 --> 00:03:07,460
‫Speichern des Dokuments in der Datenbank

70
00:03:07,460 --> 00:03:09,430
‫ein Fehler auftritt, können wir

71
00:03:09,430 --> 00:03:11,130
‫diesen Fehler hier in dieser

72
00:03:11,130 --> 00:03:12,223
‫Methode abfangen.

73
00:03:14,820 --> 00:03:17,510
‫Okay, also im Grunde hier in dieser Funktion, die

74
00:03:17,510 --> 00:03:19,103
‫ich in catch übergehe.

75
00:03:21,570 --> 00:03:24,710
‫Okay, im Moment möchte ich es wirklich nur

76
00:03:24,710 --> 00:03:26,623
‫in die Konsole einloggen.

77
00:03:27,660 --> 00:03:30,470
‫Sagen wir "Fehler", fügen Sie hier einige Emojis

78
00:03:30,470 --> 00:03:32,800
‫hinzu, um es in der

79
00:03:32,800 --> 00:03:35,154
‫Konsole besser sichtbar zu machen, und dann

80
00:03:35,154 --> 00:03:37,990
‫können wir ein zweites Argument in das Konsolenprotokoll

81
00:03:37,990 --> 00:03:40,490
‫übergeben, das dann der Fehler ist, okay?

82
00:03:40,490 --> 00:03:41,323
‫Sind Sie bereit?

83
00:03:41,323 --> 00:03:43,170
‫Dann speichern wir es jetzt,

84
00:03:43,170 --> 00:03:46,260
‫und das führt dann den Code aus, der sich

85
00:03:46,260 --> 00:03:49,520
‫hier befindet. Erstellen Sie also im Grunde diese neue Tour

86
00:03:49,520 --> 00:03:53,090
‫und versuchen Sie, sie sofort in der Datenbank zu speichern, okay?

87
00:03:53,090 --> 00:03:54,410
‫Also, lasst uns jetzt

88
00:03:54,410 --> 00:03:56,433
‫speichern und sehen, was in der Konsole

89
00:03:58,170 --> 00:03:59,733
‫passiert, und tatsächlich, los geht's.

90
00:04:01,260 --> 00:04:03,700
‫Sie sehen also, dass dies das

91
00:04:03,700 --> 00:04:07,580
‫Dokument ist, das gerade in unserer Datenbank gespeichert wurde, in Ordnung?

92
00:04:07,580 --> 00:04:10,350
‫Hier sehen wir also auch die

93
00:04:10,350 --> 00:04:13,451
‫ID, die von MongoDB einfach automatisch generiert wird

94
00:04:13,451 --> 00:04:16,770
‫und einfach die eindeutige Kennung für das Dokument ist.

95
00:04:16,770 --> 00:04:19,940
‫Genau wie zuvor im Abschnitt MongoDB erhalten

96
00:04:19,940 --> 00:04:22,800
‫wir diesen eindeutigen Bezeichner für das

97
00:04:22,800 --> 00:04:24,290
‫neue Objekt automatisch.

98
00:04:24,290 --> 00:04:26,960
‫Dann fügt Mongoose dieses V auch

99
00:04:26,960 --> 00:04:29,800
‫automatisch hinzu und setzt es hier auf Null,

100
00:04:29,800 --> 00:04:32,770
‫aber das ist jetzt nicht wirklich wichtig, okay?

101
00:04:32,770 --> 00:04:35,090
‫Wichtig ist hier, dass unser

102
00:04:35,090 --> 00:04:38,510
‫neues Dokument tatsächlich erfolgreich in die Datenbank aufgenommen

103
00:04:38,510 --> 00:04:40,920
‫wurde, und um sicherzugehen, gehen wir

104
00:04:40,920 --> 00:04:45,570
‫tatsächlich zu Compass über und werfen einen Blick auf unsere Datenbank dort.

105
00:04:45,570 --> 00:04:48,150
‫Hier haben wir also die Tourensammlung

106
00:04:48,150 --> 00:04:51,850
‫und dann das Dokument, das wir gerade erstellt haben.

107
00:04:51,850 --> 00:04:54,940
‫Es hat also genau dieselbe ID und natürlich alle anderen

108
00:04:54,940 --> 00:04:57,410
‫Daten, die wir dort eingegeben haben, und das

109
00:04:57,410 --> 00:04:59,230
‫ist tatsächlich das Objekt, das wir

110
00:04:59,230 --> 00:05:00,543
‫gerade erstellt haben.

111
00:05:01,550 --> 00:05:03,960
‫Und bedenke, dass wir die Tourensammlung hier

112
00:05:03,960 --> 00:05:05,830
‫in einem der vorherigen

113
00:05:05,830 --> 00:05:07,800
‫Videos tatsächlich gelöscht hatten, richtig,

114
00:05:07,800 --> 00:05:10,010
‫aber Mongoose hat diese neue Sammlung

115
00:05:10,010 --> 00:05:12,070
‫hier automatisch erstellt, sobald wir das

116
00:05:12,070 --> 00:05:13,960
‫erste Dokument mit dem Tourmodell

117
00:05:13,960 --> 00:05:15,730
‫erstellt haben, und so

118
00:05:15,730 --> 00:05:17,250
‫kommt dieser Name

119
00:05:17,250 --> 00:05:19,820
‫hier im Grunde von diesem Tourmodell gibt

120
00:05:19,820 --> 00:05:23,730
‫es uns einfach diesen Pluralnamen, genau wie wir es zuvor hatten.

121
00:05:23,730 --> 00:05:26,870
‫Perfekt, wir haben gerade unsere Express-Anwendung zum

122
00:05:26,870 --> 00:05:29,660
‫ersten Mal wirklich mit einer MongoDB-Datenbank

123
00:05:29,660 --> 00:05:31,060
‫interagieren lassen, und

124
00:05:31,060 --> 00:05:34,690
‫das ist wirklich erstaunlich, wenn Sie mich fragen.

125
00:05:34,690 --> 00:05:35,900
‫Das bedeutet, dass

126
00:05:35,900 --> 00:05:39,343
‫wir jetzt Dokumente direkt aus unserem Code erstellen können.

127
00:05:40,560 --> 00:05:43,700
‫Also, das freut mich sehr, also versuchen wir

128
00:05:43,700 --> 00:05:45,670
‫es noch einmal mit einem

129
00:05:45,670 --> 00:05:48,140
‫anderen, gut, aber bevor wir das

130
00:05:48,140 --> 00:05:49,930
‫tun, möchte ich diese Datei

131
00:05:49,930 --> 00:05:52,630
‫einfach hier neu laden, die dann versucht,

132
00:05:52,630 --> 00:05:55,710
‫dieses Dokument hier erneut in der Datenbank zu

133
00:05:55,710 --> 00:05:58,400
‫speichern , richtig, einfach weil all dieser

134
00:05:58,400 --> 00:06:00,183
‫Code hier jedes

135
00:06:00,183 --> 00:06:03,350
‫Mal ausgeführt wird, wenn wir die Datei speichern.

136
00:06:03,350 --> 00:06:05,945
‫Versuchen wir nun zu erraten, was passieren wird,

137
00:06:05,945 --> 00:06:07,730
‫sobald ich diese Datei speichere.

138
00:06:07,730 --> 00:06:08,563
‫Kannst du es erraten?

139
00:06:09,930 --> 00:06:11,610
‫Warten wir

140
00:06:11,610 --> 00:06:14,160
‫es ab, und tatsächlich bekommen wir

141
00:06:14,160 --> 00:06:16,000
‫jetzt etwas anderes, wir

142
00:06:16,000 --> 00:06:18,260
‫bekommen hier einen Fehler, und

143
00:06:18,260 --> 00:06:20,940
‫der Fehler, den wir sehen, ist

144
00:06:20,940 --> 00:06:25,940
‫diese doppelte Schlüsselfehlersammlung, die hier unten diesen doppelten Schlüssel sagt, okay?

145
00:06:26,210 --> 00:06:28,520
‫Wir haben also bereits eine Tour mit

146
00:06:28,520 --> 00:06:30,680
‫dem Namen 'Forest Hiker', und jetzt

147
00:06:30,680 --> 00:06:32,843
‫haben wir versucht, eine andere zu erstellen,

148
00:06:32,843 --> 00:06:35,170
‫und da wir in unserem Schema diese

149
00:06:35,170 --> 00:06:37,817
‫einzigartige Eigenschaft hier haben, ist dies nicht erlaubt,

150
00:06:37,817 --> 00:06:39,370
‫erinnern Sie sich daran?

151
00:06:39,370 --> 00:06:40,852
‫Also haben wir dieses

152
00:06:40,852 --> 00:06:43,250
‫Unique hier auf true gesetzt, um es unmöglich

153
00:06:43,250 --> 00:06:45,810
‫zu machen, zwei Touren mit dem gleichen Namen zu

154
00:06:45,810 --> 00:06:48,743
‫haben, und so haben wir gerade bewiesen, dass dies tatsächlich funktioniert.

155
00:06:49,580 --> 00:06:51,990
‫In Ordnung, also ersetzen wir einfach den Code,

156
00:06:51,990 --> 00:06:53,370
‫den wir hier haben,

157
00:06:53,370 --> 00:06:56,173
‫um eine neue Tour mit einem anderen Namen zu erstellen.

158
00:06:57,060 --> 00:06:59,917
‫Nennen wir es "The Park Camper"

159
00:07:01,640 --> 00:07:04,560
‫und entfernen wir den Preis und auch

160
00:07:04,560 --> 00:07:05,943
‫die Bewertung.

161
00:07:06,890 --> 00:07:09,403
‫Können Sie sich vorstellen, was jetzt passieren wird?

162
00:07:10,280 --> 00:07:12,450
‫Lassen Sie uns das eigentlich löschen, oder

163
00:07:12,450 --> 00:07:14,370
‫tatsächlich hat es es bereits

164
00:07:14,370 --> 00:07:17,190
‫geladen, denn sobald ich hier geklickt habe, hat es

165
00:07:17,190 --> 00:07:20,560
‫die Datei gespeichert, und so, ja, wir haben nur einen

166
00:07:20,560 --> 00:07:22,530
‫weiteren Fehler bekommen, also können Sie

167
00:07:22,530 --> 00:07:24,620
‫das hier oben sehen, was bedeutet,

168
00:07:24,620 --> 00:07:27,170
‫dass wir nicht erfolgreich gespeichert haben dieses Dokument

169
00:07:27,170 --> 00:07:30,200
‫in die Datenbank, und was wir jetzt hier bekommen,

170
00:07:30,200 --> 00:07:32,090
‫ist ein Validierungsfehler, der

171
00:07:32,090 --> 00:07:34,710
‫aus dem Preisfeld kommt und sagt: "Eine Tour

172
00:07:34,710 --> 00:07:36,670
‫muss einen Preis haben", und genau

173
00:07:36,670 --> 00:07:39,970
‫das ist die Nachricht, die wir hier angegeben haben, oder?

174
00:07:39,970 --> 00:07:42,160
‫Ganz einfach, weil wir in dieser

175
00:07:42,160 --> 00:07:45,320
‫Zeile gesagt haben, dass der Preis ein Pflichtfeld ist,

176
00:07:45,320 --> 00:07:47,050
‫in Ordnung, und dieses

177
00:07:47,050 --> 00:07:49,750
‫erforderliche Feld ist, wie bereits erwähnt, ein Validator,

178
00:07:49,750 --> 00:07:52,260
‫und hier unten erhalten wir dann einen Validierungsfehler.

179
00:07:52,260 --> 00:07:53,520
‫Also lassen Sie

180
00:07:55,860 --> 00:08:00,050
‫uns das jetzt reparieren und den Preis angeben, sagen wir 997, und

181
00:08:00,050 --> 00:08:01,460
‫sparen Sie noch einmal.

182
00:08:01,460 --> 00:08:03,310
‫Diesmal sollte es funktionieren,

183
00:08:03,310 --> 00:08:06,010
‫weil die Bewertung nicht erforderlich ist,

184
00:08:06,010 --> 00:08:07,780
‫und wenn wir

185
00:08:07,780 --> 00:08:09,930
‫hierher kommen, wurde unser Dokument

186
00:08:09,930 --> 00:08:13,060
‫tatsächlich erfolgreich in der Datenbank gespeichert, sehen Sie?

187
00:08:13,060 --> 00:08:15,450
‫Nun, wir haben die Bewertung hier in dieser Testtour nicht angegeben,

188
00:08:15,450 --> 00:08:19,240
‫aber Sie sehen, es ist immer noch 4. 5, und das liegt daran,

189
00:08:19,240 --> 00:08:20,800
‫dass wir den Standard auf

190
00:08:20,800 --> 00:08:23,770
‫4 gesetzt haben. 5 hier oben.

191
00:08:23,770 --> 00:08:24,750
‫Deshalb wollte ich

192
00:08:24,750 --> 00:08:26,763
‫Ihnen das hier in diesem kurzen Beispiel nur zeigen.

193
00:08:27,770 --> 00:08:30,810
‫Okay, wir waren wieder erfolgreich, also lass uns

194
00:08:30,810 --> 00:08:33,210
‫hierher zurückkommen, neu laden, du klickst

195
00:08:33,210 --> 00:08:35,690
‫auf diesen Button, und tatsächlich bekommen

196
00:08:35,690 --> 00:08:37,840
‫wir jetzt unsere beiden Touren.

197
00:08:37,840 --> 00:08:40,930
‫Großartig, und ich erinnere mich, wie großartig es sich

198
00:08:40,930 --> 00:08:43,370
‫für mich angefühlt hat, als ich zum

199
00:08:43,370 --> 00:08:46,250
‫ersten Mal anfing, Express und Mongo zu lernen,

200
00:08:46,250 --> 00:08:48,120
‫und wie man diese Anwendungen

201
00:08:48,120 --> 00:08:50,240
‫erstellte, und ich hoffe wirklich, dass

202
00:08:50,240 --> 00:08:52,130
‫es Ihnen im Moment genauso

203
00:08:52,130 --> 00:08:54,100
‫geht. da Sie gerade Ihre allerersten

204
00:08:54,100 --> 00:08:56,033
‫Dokumente mit Express und natürlich

205
00:08:56,033 --> 00:08:57,823
‫MongoDB erstellt haben.

