﻿1
00:00:01,090 --> 00:00:03,130
‫Kursleiter: In der letzten

2
00:00:03,130 --> 00:00:06,010
‫Vorlesung haben wir also Mongoose-Schemas und -Modelle kennengelernt

3
00:00:06,010 --> 00:00:08,260
‫und lassen uns nun ein sehr

4
00:00:08,260 --> 00:00:11,173
‫einfaches Schema und Modell für unsere Anwendung implementieren.

5
00:00:12,920 --> 00:00:14,990
‫Und jetzt machen wir das gleich hier

6
00:00:14,990 --> 00:00:17,330
‫auf unserem Server. js-Datei.

7
00:00:17,330 --> 00:00:19,020
‫Später verschieben wir

8
00:00:19,020 --> 00:00:21,370
‫das natürlich in eine andere Datei.

9
00:00:21,370 --> 00:00:24,560
‫Bei Mongoose dreht sich alles um Modelle, und ein

10
00:00:24,560 --> 00:00:26,960
‫Modell ist wie eine Blaupause,

11
00:00:26,960 --> 00:00:29,420
‫die wir verwenden, um Dokumente zu erstellen.

12
00:00:29,420 --> 00:00:32,290
‫Es ist also ein bisschen wie mit

13
00:00:32,290 --> 00:00:35,080
‫Klassen in JavaScript, die wir auch

14
00:00:35,080 --> 00:00:38,590
‫als Blaupausen verwenden, um daraus Objekte zu erstellen, oder?

15
00:00:38,590 --> 00:00:41,500
‫Wir erstellen also wieder ein Modell in

16
00:00:41,500 --> 00:00:44,000
‫Mongoose, um damit Dokumente zu erstellen

17
00:00:44,000 --> 00:00:47,670
‫und diese Dokumente auch abzufragen, zu aktualisieren und zu löschen.

18
00:00:47,670 --> 00:00:50,840
‫Um jeden der CRUD-Vorgänge, also Erstellen, Lesen, Aktualisieren

19
00:00:50,840 --> 00:00:53,420
‫und Löschen, auszuführen, benötigen wir

20
00:00:53,420 --> 00:00:56,520
‫im Grunde ein Mongoose-Modell, und um ein Modell

21
00:00:56,520 --> 00:00:59,520
‫zu erstellen, benötigen wir tatsächlich ein Schema.

22
00:00:59,520 --> 00:01:01,700
‫Wir erstellen also tatsächlich Modelle

23
00:01:01,700 --> 00:01:03,820
‫aus dem Mongoose-Schema, genau

24
00:01:03,820 --> 00:01:06,490
‫wie wir es im letzten Video gelernt

25
00:01:06,490 --> 00:01:09,910
‫haben, und verwenden das Schema, um unsere Daten zu

26
00:01:09,910 --> 00:01:13,660
‫beschreiben, Standardwerte festzulegen, die Daten zu validieren und vieles mehr.

27
00:01:13,660 --> 00:01:15,620
‫Genau wie Sie jetzt sehen

28
00:01:15,620 --> 00:01:17,930
‫werden, denn jetzt werden wir tatsächlich damit

29
00:01:17,930 --> 00:01:20,990
‫beginnen, ein sehr einfaches Schema für unsere Touren zu erstellen.

30
00:01:20,990 --> 00:01:24,980
‫Sagen wir, tourSchema ist ein

31
00:01:28,300 --> 00:01:32,363
‫neuer Mungo. Schema.

32
00:01:33,852 --> 00:01:36,752
‫Fügen Sie hier hinzu, dass wir unser Schema tatsächlich als Objekt übergeben.

33
00:01:37,590 --> 00:01:40,990
‫Okay, wir können dann auch einige Optionen in das Schema

34
00:01:40,990 --> 00:01:44,090
‫übernehmen, aber das überlasse ich einem zukünftigen Video, in

35
00:01:44,090 --> 00:01:46,640
‫dem wir diese Funktion tatsächlich brauchen.

36
00:01:46,640 --> 00:01:49,020
‫Erinnern Sie sich also an die Tourdokumente, die

37
00:01:49,020 --> 00:01:51,090
‫wir im letzten Abschnitt erstellt haben,

38
00:01:51,090 --> 00:01:53,190
‫als wir anfingen, Mongoose DB zu erkunden?

39
00:01:53,190 --> 00:01:54,760
‫Also haben wir ihnen

40
00:01:54,760 --> 00:01:57,100
‫immer einen Namen, eine Bewertung und einen

41
00:01:57,100 --> 00:01:59,226
‫Preis gegeben, richtig, und nun wiederholen wir

42
00:01:59,226 --> 00:02:02,010
‫das hier, indem wir name sagen und dann beschreiben,

43
00:02:02,010 --> 00:02:04,717
‫welche Art von Daten wir hinter dem Namen haben

44
00:02:04,717 --> 00:02:07,500
‫wollen, und wir wollen, dass es eine Zeichenfolge ist.

45
00:02:07,500 --> 00:02:09,770
‫Mongoose verwendet also tatsächlich

46
00:02:09,770 --> 00:02:13,280
‫die nativen JavaScript-Datentypen, und hier können wir "String"

47
00:02:13,280 --> 00:02:16,980
‫sagen oder nach der Bewertung sagen, dass wir eine

48
00:02:19,394 --> 00:02:22,163
‫Zahl und dasselbe wie den Preis wollen.

49
00:02:23,340 --> 00:02:25,890
‫Es sollte auch eine Zahl sein, oder?

50
00:02:25,890 --> 00:02:30,320
‫Dies ist also die einfachste Art, unsere Daten zu beschreiben.

51
00:02:30,320 --> 00:02:33,130
‫Wir haben also einen Namen, eine Bewertung und

52
00:02:33,130 --> 00:02:34,913
‫einen Preis, und wir haben

53
00:02:34,913 --> 00:02:38,150
‫den Datentyp angegeben, den wir für jedes dieser Felder erwarten.

54
00:02:38,150 --> 00:02:40,340
‫Dies ist wiederum die

55
00:02:40,340 --> 00:02:43,100
‫einfachste Art, ein Schema zu beschreiben, aber wir

56
00:02:43,100 --> 00:02:45,650
‫können noch einen Schritt weiter gehen, indem

57
00:02:45,650 --> 00:02:48,360
‫wir für jedes Feld oder nur für

58
00:02:48,360 --> 00:02:50,600
‫ein bestimmtes Feld sogenannte Schematypoptionen definieren.

59
00:02:50,600 --> 00:02:52,640
‫Beginnen wir also hier mit dem

60
00:02:52,640 --> 00:02:54,270
‫Namen, und anstatt

61
00:02:54,270 --> 00:02:58,490
‫ihn nur als String anzugeben, übergeben wir tatsächlich ein anderes Objekt.

62
00:02:58,490 --> 00:03:01,340
‫Und jetzt sagen wir, dass der Typ String

63
00:03:01,340 --> 00:03:02,850
‫sein soll, aber wir

64
00:03:02,850 --> 00:03:05,640
‫können jetzt ein paar weitere Optionen definieren, okay?

65
00:03:05,640 --> 00:03:10,640
‫Zum Beispiel können wir sagen, dass dieses Feld erforderlich ist, und

66
00:03:12,070 --> 00:03:13,060
‫setzen

67
00:03:13,060 --> 00:03:17,110
‫die erforderliche Eigenschaft hier einfach auf true, in Ordnung?

68
00:03:17,110 --> 00:03:20,970
‫Dieses Objekt hier sind also die Schematypoptionen, die für verschiedene

69
00:03:20,970 --> 00:03:23,320
‫Typen unterschiedlich sein können, zum Beispiel

70
00:03:23,320 --> 00:03:25,640
‫hat der Zahlentyp einige

71
00:03:25,640 --> 00:03:28,250
‫andere Schemaoptionen als der String hier, aber

72
00:03:28,250 --> 00:03:30,770
‫viele von ihnen sind auch ähnlich.

73
00:03:30,770 --> 00:03:32,630
‫Also zum Beispiel das erforderliche, wir können

74
00:03:32,630 --> 00:03:35,403
‫es auch für die Nummer verwenden, und das machen wir hier.

75
00:03:39,750 --> 00:03:42,776
‫Also der Typ, wir wollen immer noch, dass

76
00:03:42,776 --> 00:03:47,460
‫es eine Zahl ist, und wir wollen auch, dass es erforderlich ist, okay?

77
00:03:47,460 --> 00:03:49,460
‫Jetzt können wir hier im erforderlichen

78
00:03:49,460 --> 00:03:52,310
‫Feld den Fehler angeben, der angezeigt werden soll,

79
00:03:52,310 --> 00:03:54,020
‫wenn dieses Feld fehlt.

80
00:03:54,020 --> 00:03:55,760
‫Um dies zu tun,

81
00:03:55,760 --> 00:03:59,300
‫müssen wir nur ein Array übergeben, und das erste ist wahr.

82
00:03:59,300 --> 00:04:01,720
‫Das erste Element ist also wahr und

83
00:04:01,720 --> 00:04:03,820
‫das zweite ist die Fehlerzeichenfolge.

84
00:04:03,820 --> 00:04:08,670
‫Sagen wir, eine Tour muss einen Namen haben, und dann

85
00:04:08,670 --> 00:04:10,270
‫machen wir dasselbe.

86
00:04:15,459 --> 00:04:17,490
‫Die Tour muss einen Preis haben, okay?

87
00:04:17,490 --> 00:04:19,698
‫Dann können wir auch Standardwerte

88
00:04:19,698 --> 00:04:22,720
‫setzen und das machen wir hier für die Bewertung.

89
00:04:22,720 --> 00:04:24,640
‫Ich werde hier noch

90
00:04:24,640 --> 00:04:27,610
‫einmal einige Schematypoptionen angeben, die nicht obligatorisch sind. Es

91
00:04:27,610 --> 00:04:29,700
‫reicht also aus, den Typ hier

92
00:04:29,700 --> 00:04:32,210
‫einfach so zu definieren, wie wir es getan

93
00:04:32,210 --> 00:04:34,150
‫haben, aber wenn Sie mehr Funktionen

94
00:04:34,150 --> 00:04:37,033
‫wünschen, müssen wir zumindest das Schema angeben type options-Objekt.

95
00:04:38,080 --> 00:04:42,580
‫Okay, und dann müssen wir den Typ erneut angeben, der Zahl ist, und als

96
00:04:42,580 --> 00:04:47,480
‫Standard möchte ich, dass er 4 ist. 5.

97
00:04:48,350 --> 00:04:50,990
‫Wenn wir also jetzt ein neues Tourdokument

98
00:04:50,990 --> 00:04:54,270
‫mit diesem Schema erstellen und die Bewertung nicht angeben,

99
00:04:54,270 --> 00:04:58,928
‫wird es automatisch auf 4 gesetzt. 5, in Ordnung?

100
00:04:58,928 --> 00:05:02,100
‫Und zum Schluss versuchen wir es hier mit einem anderen,

101
00:05:02,100 --> 00:05:04,853
‫das heißt, der Name sollte eindeutig sein.

102
00:05:05,910 --> 00:05:09,080
‫Also, einzigartig und auf "true" setzen, und

103
00:05:09,080 --> 00:05:11,020
‫so können wir jetzt

104
00:05:11,020 --> 00:05:14,390
‫zwei Tourdokumente mit demselben Namen haben, in Ordnung?

105
00:05:14,390 --> 00:05:16,550
‫Das ist also unser sehr grundlegendes

106
00:05:16,550 --> 00:05:18,370
‫Schema, lassen Sie uns nun

107
00:05:18,370 --> 00:05:21,230
‫weitermachen und tatsächlich ein Modell daraus erstellen, in Ordnung?

108
00:05:21,230 --> 00:05:22,380
‫Und das

109
00:05:24,890 --> 00:05:28,412
‫ist ganz einfach, wir erstellen einfach eine Variable

110
00:05:28,412 --> 00:05:32,390
‫namens Tour und dann Mungo. model, dann der Name

111
00:05:32,390 --> 00:05:36,380
‫des Modells, hier Tour mit einem großen T,

112
00:05:36,380 --> 00:05:37,780
‫in Ordnung.

113
00:05:37,780 --> 00:05:39,930
‫Und das ist nur eine

114
00:05:39,930 --> 00:05:42,500
‫Art Konvention in der Programmierung, bei Modellnamen

115
00:05:42,500 --> 00:05:44,720
‫und Variablen immer Großbuchstaben zu verwenden.

116
00:05:44,720 --> 00:05:47,040
‫Hier ist es also dasselbe, daher habe ich

117
00:05:47,040 --> 00:05:49,980
‫diese Tourvariable auch hier mit einem großen T erstellt, nur damit wir

118
00:05:49,980 --> 00:05:52,630
‫wissen, dass wir es hier mit einem Modell zu tun haben.

119
00:05:53,750 --> 00:05:55,940
‫In Ordnung, also der

120
00:05:55,940 --> 00:06:00,940
‫Name des Modells und dann das Schema, und das war's.

121
00:06:01,310 --> 00:06:04,210
‫Also haben wir einfach so eine Tour

122
00:06:04,210 --> 00:06:08,210
‫aus dem Schema erstellt, das wir hier am Anfang erstellt haben.

123
00:06:08,210 --> 00:06:10,150
‫Alles klar, und im

124
00:06:10,150 --> 00:06:12,570
‫nächsten Video werden wir dann dieses

125
00:06:12,570 --> 00:06:17,220
‫Modell hier verwenden, um unser allererstes Tourdokument zu erstellen, in Ordnung?

126
00:06:17,220 --> 00:06:21,300
‫Also nur eine Zusammenfassung hier, wir haben neuen Mungo verwendet. Schema hier, um

127
00:06:21,300 --> 00:06:24,525
‫ein Schema für unsere Daten anzugeben.

128
00:06:24,525 --> 00:06:27,870
‫Also, im Grunde beschreiben und auch etwas validieren.

129
00:06:27,870 --> 00:06:29,800
‫Dies ist zum Beispiel hier

130
00:06:29,800 --> 00:06:32,580
‫erforderlich, dies ist eigentlich ein sogenannter Validator, da

131
00:06:32,580 --> 00:06:35,120
‫er zur Validierung unserer Daten verwendet wird.

132
00:06:35,120 --> 00:06:37,330
‫In diesem Fall einfach, um zu überprüfen,

133
00:06:37,330 --> 00:06:39,390
‫ob der Name tatsächlich vorhanden ist.

134
00:06:39,390 --> 00:06:41,757
‫Und es gibt viele Validatoren in Mongoose,

135
00:06:41,757 --> 00:06:44,200
‫und wir können sogar unsere eigenen erstellen,

136
00:06:44,200 --> 00:06:46,400
‫und natürlich werden wir etwas

137
00:06:46,400 --> 00:06:50,186
‫später noch einmal darüber sprechen, sobald wir diese Funktionen tatsächlich benötigen.

138
00:06:50,186 --> 00:06:52,600
‫Wie auch immer, lassen Sie uns jetzt

139
00:06:52,600 --> 00:06:54,540
‫schnell weitermachen, um endlich das soeben

140
00:06:54,540 --> 00:06:56,113
‫erstellte Modell zu verwenden.

