﻿1
00:00:01,110 --> 00:00:02,900
‫Lehrer: Denken Sie also

2
00:00:02,900 --> 00:00:05,510
‫daran, wie wir im Video zu unserem

3
00:00:05,510 --> 00:00:07,880
‫Datenmodell gesagt haben, dass wir die

4
00:00:07,880 --> 00:00:10,204
‫Tourguide-Daten entweder einbetten oder referenzieren können.

5
00:00:10,204 --> 00:00:13,340
‫In diesem Video zeige ich Ihnen also, wie wir

6
00:00:13,340 --> 00:00:16,393
‫die Einbettung von Tourguide-Dokumenten in ein Tourdokument implementieren können.

7
00:00:17,930 --> 00:00:20,320
‫Also noch einmal, in diesem Vortrag

8
00:00:20,320 --> 00:00:23,700
‫werden wir Benutzerdokumente in Tourdokumente einbetten, und dann zeige

9
00:00:23,700 --> 00:00:25,840
‫ich Ihnen im nächsten

10
00:00:25,840 --> 00:00:28,030
‫Video, wie wir Benutzer tatsächlich

11
00:00:28,030 --> 00:00:30,610
‫referenzieren können, anstatt sie einzubetten, in Ordnung?

12
00:00:30,610 --> 00:00:33,020
‫Die Idee hier ist also, dass

13
00:00:33,020 --> 00:00:35,730
‫der Benutzer beim Erstellen eines neuen Tourdokuments

14
00:00:35,730 --> 00:00:38,630
‫einfach ein Array von Benutzer-IDs hinzufügt und wir

15
00:00:38,630 --> 00:00:41,020
‫dann die entsprechenden Benutzerdokumente basierend auf

16
00:00:41,020 --> 00:00:42,827
‫diesen IDs erhalten

17
00:00:42,827 --> 00:00:44,800
‫und sie unseren Tourdokumenten hinzufügen.

18
00:00:44,800 --> 00:00:48,813
‫Mit anderen Worten, wir betten sie in unsere Tour ein, okay?

19
00:00:50,903 --> 00:00:52,323
‫Also machen wir das jetzt hier.

20
00:00:55,430 --> 00:00:59,220
‫Leitfäden werden also vom Typ Array sein, okay?

21
00:00:59,220 --> 00:01:01,700
‫Ganz einfach, und bevor wir Code implementieren,

22
00:01:01,700 --> 00:01:04,080
‫möchte ich Ihnen als Beispiel zeigen,

23
00:01:04,080 --> 00:01:06,943
‫wie dies beim Erstellen einer neuen Tour funktionieren würde.

24
00:01:08,680 --> 00:01:11,360
‫Also, gehen wir zurück zu

25
00:01:11,360 --> 00:01:14,523
‫Postman hier und erstellen eine neue

26
00:01:16,270 --> 00:01:18,330
‫Tour, okay, und

27
00:01:18,330 --> 00:01:23,113
‫hier in unserem Körper würden wir jetzt natürlich die Leitfäden,

28
00:01:24,410 --> 00:01:29,400
‫Anführungszeichen hinzufügen und dann ein Array von IDs angeben, okay?

29
00:01:29,400 --> 00:01:31,113
‫Lassen Sie uns also einige Benutzer-IDs abrufen.

30
00:01:32,610 --> 00:01:36,070
‫Holen Sie sich also alle Benutzer, sehen wir uns an, was wir hier haben.

31
00:01:36,070 --> 00:01:38,070
‫Wir haben hier also tatsächlich eine Anleitung,

32
00:01:38,070 --> 00:01:39,620
‫und holen wir uns diese

33
00:01:40,460 --> 00:01:42,060
‫ID zusammen mit den Anführungszeichen, und

34
00:01:46,370 --> 00:01:47,893
‫fügen wir sie hier

35
00:01:49,410 --> 00:01:51,163
‫ein und fügen wir einige andere hinzu.

36
00:01:52,900 --> 00:01:57,100
‫Also auch das hier und eigentlich nur diese beiden.

37
00:01:57,100 --> 00:02:02,100
‫Das sollte ausreichen, um das Zeug zu testen, okay, und so werden

38
00:02:02,410 --> 00:02:04,100
‫wir dann eine neue

39
00:02:04,100 --> 00:02:07,490
‫Tour mit zwei Guides erstellen, okay, und wieder,

40
00:02:07,490 --> 00:02:10,440
‫wenn wir diese Tour speichern, werden wir

41
00:02:10,440 --> 00:02:11,840
‫dann hinter

42
00:02:11,840 --> 00:02:13,472
‫den Kulissen die holen

43
00:02:13,472 --> 00:02:17,270
‫zwei Benutzerdokumente, die diesen beiden IDs entsprechen, in Ordnung?

44
00:02:17,270 --> 00:02:19,263
‫Also, lassen Sie uns das

45
00:02:20,440 --> 00:02:21,930
‫implementieren, und in

46
00:02:21,930 --> 00:02:23,960
‫unserem Modell ist der beste Ort

47
00:02:23,960 --> 00:02:26,283
‫dafür eine vorab gespeicherte Middleware, oder?

48
00:02:27,280 --> 00:02:29,980
‫Das passiert dann automatisch hinter den Kulissen,

49
00:02:29,980 --> 00:02:31,550
‫im Grunde jedes

50
00:02:31,550 --> 00:02:34,730
‫Mal, wenn eine neue Tour gespeichert wird, und eigentlich

51
00:02:34,730 --> 00:02:36,780
‫möchte ich es hier nicht tun.

52
00:02:37,620 --> 00:02:39,250
‫Wir haben also eine Abfrage, hier

53
00:02:39,250 --> 00:02:40,920
‫ist das Dokument "Middleware", also machen

54
00:02:40,920 --> 00:02:42,203
‫wir das hier.

55
00:02:43,320 --> 00:02:45,103
‫Also tourSchema. pre,

56
00:02:53,580 --> 00:02:57,370
‫Okay, rufen wir gleich hier weiter an, damit wir

57
00:02:57,370 --> 00:02:59,600
‫es am Ende nicht vergessen.

58
00:02:59,600 --> 00:03:04,600
‫Okay, das bekommen wir. guides als Eingabe, und denken Sie daran,

59
00:03:05,220 --> 00:03:07,360
‫dass dies ein Array aller Benutzer-IDs

60
00:03:07,360 --> 00:03:10,330
‫sein wird, richtig, und wir werden sie also

61
00:03:10,330 --> 00:03:13,290
‫mit einer . map, und dann

62
00:03:13,290 --> 00:03:15,480
‫holen Sie sich in jeder

63
00:03:15,480 --> 00:03:18,373
‫Iteration das Benutzerdokument für die aktuelle ID,

64
00:03:19,477 --> 00:03:24,477
‫in Ordnung, und wir werden das in den Anleitungen speichern, in Ordnung?

65
00:03:26,460 --> 00:03:29,284
‫Also, das aktuelle Element, das die ID sein

66
00:03:29,284 --> 00:03:30,840
‫wird, nennen wir es

67
00:03:30,840 --> 00:03:32,960
‫eigentlich ID, um es ein bisschen

68
00:03:32,960 --> 00:03:36,360
‫leichter verständlich zu machen, und jetzt brauchen wir tatsächlich den

69
00:03:36,360 --> 00:03:38,803
‫Benutzer, richtig, also lass uns das importieren.

70
00:03:41,630 --> 00:03:43,143
‫Also, const User,

71
00:03:45,490 --> 00:03:46,563
‫require, und

72
00:03:48,000 --> 00:03:53,000
‫es ist tatsächlich im selben Ordner hier, in Ordnung, also

73
00:03:55,759 --> 00:03:57,300
‫User. findByID

74
00:04:01,350 --> 00:04:03,730
‫mit der aktuellen ID, in Ordnung?

75
00:04:03,730 --> 00:04:05,550
‫Aber denken Sie jetzt daran,

76
00:04:05,550 --> 00:04:09,977
‫dass wir dieses Versprechen hier tatsächlich abwarten müssen, und daher muss

77
00:04:09,977 --> 00:04:11,870
‫die Funktion als asynchron markiert

78
00:04:11,870 --> 00:04:13,513
‫werden, aber jetzt bekommen

79
00:04:15,540 --> 00:04:18,313
‫wir tatsächlich ein Problem, in Ordnung, weil

80
00:04:18,313 --> 00:04:21,340
‫die . Die map-Methode weist

81
00:04:21,340 --> 00:04:24,550
‫das Ergebnis jeder Iteration dem neuen Element im

82
00:04:24,550 --> 00:04:27,150
‫Guides-Array zu, okay, und jetzt haben

83
00:04:27,150 --> 00:04:29,100
‫wir hier eine asynchrone

84
00:04:29,100 --> 00:04:31,760
‫Funktion, die, wie Sie wissen, ein

85
00:04:31,760 --> 00:04:34,160
‫Versprechen zurückgibt, und im Moment ist

86
00:04:34,160 --> 00:04:38,120
‫dieses Guides-Array hier im Grunde ein Array voller Versprechen, okay.

87
00:04:38,120 --> 00:04:40,530
‫Nennen wir diese Anleitungen eigentlich Versprechen

88
00:04:42,200 --> 00:04:44,160
‫und deshalb müssen wir

89
00:04:44,160 --> 00:04:47,240
‫jetzt alle diese Versprechen im Grunde gleichzeitig ausführen.

90
00:04:47,240 --> 00:04:49,520
‫Wie ich Ihnen etwas weiter oben

91
00:04:49,520 --> 00:04:51,490
‫in diesem Code gezeigt habe,

92
00:04:51,490 --> 00:04:53,860
‫müssen wir zumindest, wenn Sie den asynchronen

93
00:04:53,860 --> 00:04:58,860
‫JavaScript-Abschnitt nicht übersprungen haben, nur auf Promise warten. all and then guidesVersprechen,

94
00:05:01,230 --> 00:05:03,450
‫okay, und das

95
00:05:04,820 --> 00:05:07,670
‫Ergebnis können wir diesem

96
00:05:07,670 --> 00:05:11,390
‫direkt zuordnen. Guides, und überschreibe also

97
00:05:11,390 --> 00:05:14,130
‫im Grunde das Tempel-Array von IDs

98
00:05:14,130 --> 00:05:18,420
‫mit einem Array von Benutzerdokumenten, okay, und da wir hier

99
00:05:18,420 --> 00:05:20,000
‫jetzt await

100
00:05:20,000 --> 00:05:23,860
‫verwenden, müssen wir diese Funktion als asynchron markieren, okay?

101
00:05:23,860 --> 00:05:27,900
‫Speichern Sie es und ich denke, das war es tatsächlich, okay?

102
00:05:27,900 --> 00:05:31,460
‫Auch hier müssen wir Promise verwenden. alles hier, weil

103
00:05:31,460 --> 00:05:35,298
‫das Ergebnis von all dem hier ein Versprechen ist, okay, und

104
00:05:35,298 --> 00:05:38,410
‫daher wird dieses Array hier ein Array voller Versprechen

105
00:05:38,410 --> 00:05:40,483
‫sein, die wir dann ausführen, indem

106
00:05:40,483 --> 00:05:44,180
‫wir auf das Versprechen warten. alles okay?

107
00:05:44,180 --> 00:05:46,450
‫Also, lassen Sie uns das jetzt

108
00:05:46,450 --> 00:05:50,018
‫tatsächlich testen, und wir haben den gesamten Code hier bereits fertig,

109
00:05:50,018 --> 00:05:52,373
‫wir sollten diesen Namen einfach hier ändern.

110
00:05:55,150 --> 00:05:58,560
‫Also, 'Testtour', aber die IDs sind schon da.

111
00:05:58,560 --> 00:06:01,760
‫Lassen Sie uns dies senden, und unser Tourname muss länger

112
00:06:01,760 --> 00:06:05,167
‫sein, 'New Task Tour. ' Okay,

113
00:06:06,050 --> 00:06:11,050
‫aber jetzt werfen wir einen Blick auf unsere Ergebnisse,

114
00:06:11,240 --> 00:06:15,900
‫und so bekommen wir tatsächlich unsere Anleitungen hier, okay?

115
00:06:15,900 --> 00:06:18,580
‫Das sind also die vollständigen

116
00:06:18,580 --> 00:06:22,170
‫Dokumente, und zwar nicht nur die Ausweise, oder?

117
00:06:22,170 --> 00:06:24,198
‫Großartig, und so

118
00:06:24,198 --> 00:06:28,440
‫könnten wir die Einbettung für dieses Tourguide-Beispiel implementieren.

119
00:06:28,440 --> 00:06:30,840
‫Nun, dieser einfache Code, den wir hier

120
00:06:30,840 --> 00:06:33,850
‫implementiert haben, funktioniert natürlich nur zum Erstellen neuer Dokumente,

121
00:06:33,850 --> 00:06:35,820
‫nicht zum Aktualisieren, oder?

122
00:06:35,820 --> 00:06:38,020
‫Jetzt müssten wir also

123
00:06:38,020 --> 00:06:42,350
‫weitermachen und dieselbe Logik auch für Updates implementieren.

124
00:06:42,350 --> 00:06:44,540
‫Ich werde dies jedoch nicht tun, denn

125
00:06:44,540 --> 00:06:47,530
‫erinnern Sie sich an das Video, in dem wir unsere

126
00:06:47,530 --> 00:06:49,450
‫Daten modelliert haben, dass die Einbettung

127
00:06:49,450 --> 00:06:52,090
‫dieser Daten in diesem Fall tatsächlich einige Nachteile hat.

128
00:06:52,090 --> 00:06:54,350
‫Stellen Sie sich zum Beispiel vor,

129
00:06:54,350 --> 00:06:56,770
‫dass ein Reiseleiter seine E-Mail-Adresse aktualisiert oder

130
00:06:56,770 --> 00:06:59,250
‫seine Rolle von Reiseleiter zu Reiseleiter wechselt.

131
00:06:59,250 --> 00:07:02,020
‫Jedes Mal, wenn eine dieser Änderungen vorkommt, müssen Sie

132
00:07:02,020 --> 00:07:04,130
‫überprüfen, ob eine Tour diesen Benutzer als

133
00:07:04,130 --> 00:07:06,610
‫Leitfaden hat, und wenn ja, dann die Tour

134
00:07:06,610 --> 00:07:08,670
‫auch aktualisieren, und das ist wirklich viel

135
00:07:08,670 --> 00:07:10,650
‫Arbeit und wir nicht Ich werde

136
00:07:10,650 --> 00:07:11,640
‫in diese

137
00:07:11,640 --> 00:07:13,085
‫Richtung gehen, in Ordnung?

138
00:07:13,085 --> 00:07:15,530
‫Nun wollte ich Ihnen noch zeigen, wie

139
00:07:15,530 --> 00:07:17,220
‫Embedding wirklich funktioniert

140
00:07:17,220 --> 00:07:19,520
‫und wie wir es in dieser

141
00:07:19,520 --> 00:07:22,201
‫Situation umsetzen können, denn ich halte es wirklich

142
00:07:22,201 --> 00:07:24,551
‫für sehr wichtig, dass Sie immer noch

143
00:07:24,551 --> 00:07:26,340
‫wissen, wie man alles macht,

144
00:07:26,340 --> 00:07:28,590
‫falls Sie es jemals in Ihren

145
00:07:28,590 --> 00:07:30,820
‫eigenen Anwendungen brauchen, okay, Aber in

146
00:07:30,820 --> 00:07:33,810
‫dieser speziellen Situation werden wir statt der Einbettung Referenzen

147
00:07:33,810 --> 00:07:36,085
‫verwenden, und ich habe in diesem

148
00:07:36,085 --> 00:07:38,400
‫Video über die Gründe dafür gesprochen, okay?

149
00:07:38,400 --> 00:07:40,930
‫Also, lasst uns tatsächlich weitermachen und das gleich

150
00:07:40,930 --> 00:07:42,803
‫in der nächsten Vorlesung machen.

