﻿1
00:00:01,090 --> 00:00:03,300
‫Kursleiter: Als nächstes Feature in unserer

2
00:00:03,300 --> 00:00:04,910
‫API haben wir die

3
00:00:04,910 --> 00:00:07,290
‫Feldbegrenzung, also im Grunde, damit Kunden auswählen

4
00:00:07,290 --> 00:00:08,900
‫können, welche Felder sie

5
00:00:08,900 --> 00:00:10,543
‫in der Antwort zurückgeben möchten.

6
00:00:11,960 --> 00:00:14,530
‫Für einen Client ist es daher immer

7
00:00:14,530 --> 00:00:16,980
‫ideal, so wenig Daten wie möglich

8
00:00:16,980 --> 00:00:19,170
‫zu erhalten, um die Bandbreite

9
00:00:19,170 --> 00:00:21,890
‫zu reduzieren, die bei jeder Anfrage verbraucht wird.

10
00:00:21,890 --> 00:00:23,890
‫Und das gilt natürlich

11
00:00:23,890 --> 00:00:27,650
‫besonders, wenn wir wirklich datenintensive Datensätze haben, oder?

12
00:00:27,650 --> 00:00:29,470
‫Es ist also eine

13
00:00:29,470 --> 00:00:33,793
‫sehr nette Funktion, dem API-Benutzer zu ermöglichen, nur einige der Felder anzufordern.

14
00:00:36,470 --> 00:00:41,323
‫Als dritte Funktion haben wir die Feldbegrenzung.

15
00:00:42,460 --> 00:00:45,280
‫Und lassen Sie mich wie zuvor damit beginnen, Ihnen zu

16
00:00:45,280 --> 00:00:47,823
‫zeigen, wie es hier in Postman funktionieren wird.

17
00:00:49,130 --> 00:00:53,083
‫Wir werden also ein Feld namens "fields" angeben und dann

18
00:00:53,083 --> 00:00:54,710
‫den Namen der

19
00:00:54,710 --> 00:00:56,810
‫Felder, die wir tatsächlich empfangen möchten.

20
00:00:56,810 --> 00:00:58,853
‫Sagen wir also, wir

21
00:01:00,720 --> 00:01:01,773
‫wollen

22
00:01:03,570 --> 00:01:08,570
‫nur den Namen, die Dauer, den Schwierigkeitsgrad und den Preis.

23
00:01:08,600 --> 00:01:11,580
‫Die Implementierung wird also derjenigen, die wir zuvor beim Sortieren

24
00:01:11,580 --> 00:01:13,513
‫gemacht haben, sehr ähnlich sein.

25
00:01:14,860 --> 00:01:19,417
‫Also ggf. Anfrage. Felder, dann erstellen

26
00:01:22,400 --> 00:01:24,270
‫wir hier tatsächlich wieder

27
00:01:24,270 --> 00:01:28,310
‫eine Variable für diese Felder, denn genau wie zuvor fordert

28
00:01:28,310 --> 00:01:30,610
‫Mongodbs tatsächlich eine Zeichenfolge mit

29
00:01:30,610 --> 00:01:34,100
‫dem durch Leerzeichen getrennten Feldnamen an, in Ordnung?

30
00:01:34,100 --> 00:01:36,100
‫Lassen Sie mich nun

31
00:01:36,100 --> 00:01:40,883
‫damit beginnen, diesen Teil aufzuschreiben, okay, also die Abfrage selbst.

32
00:01:41,770 --> 00:01:45,887
‫Abfrage ist also gleich Abfrage. auswählen, okay?

33
00:01:48,710 --> 00:01:51,740
‫Und hier erwartet es zum Beispiel eine

34
00:01:51,740 --> 00:01:56,740
‫Zeichenfolge wie, Name, dann Leerzeichen, Dauer und zum Beispiel ein Preis, okay.

35
00:01:59,420 --> 00:02:01,540
‫Auf diese Weise werden

36
00:02:01,540 --> 00:02:04,070
‫nur diese drei Feldnamen ausgewählt und

37
00:02:04,070 --> 00:02:07,020
‫das Ergebnis nur mit diesen zurückgesendet, okay?

38
00:02:07,020 --> 00:02:09,150
‫Und eigentlich wird dieser

39
00:02:09,150 --> 00:02:14,150
‫Vorgang, bei dem nur bestimmte Feldnamen ausgewählt werden, als Projektion bezeichnet, okay?

40
00:02:14,720 --> 00:02:17,110
‫Also, lass uns jetzt weitermachen und

41
00:02:17,110 --> 00:02:21,930
‫im Grunde die Saite erstellen, genau wie wir es dort oben gemacht haben.

42
00:02:21,930 --> 00:02:26,930
‫Wir beginnen also mit req. Anfrage. Felder, dann trennen wir es durch

43
00:02:28,047 --> 00:02:29,663
‫ein Komma und verbinden

44
00:02:30,840 --> 00:02:32,490
‫es mit einer leeren Zeichenfolge.

45
00:02:33,800 --> 00:02:36,570
‫Mit einem Leerzeichen eigentlich, sorry.

46
00:02:36,570 --> 00:02:38,590
‫Also mit dem Leerzeichen

47
00:02:38,590 --> 00:02:42,683
‫und so wird genau dieser String mit diesem genauen Format erzeugt.

48
00:02:44,160 --> 00:02:47,033
‫Dann brauchen wir hier nur noch diese Felder zu verwenden.

49
00:02:49,490 --> 00:02:53,150
‫Dann möchte ich wie zuvor

50
00:02:53,150 --> 00:02:57,280
‫auch einen Standardwert hinzufügen, falls der Benutzer

51
00:02:57,280 --> 00:03:01,240
‫das Feld "Felder" nicht angibt, okay,

52
00:03:03,230 --> 00:03:08,230
‫in diesem Fall werden wir einfach etwas entfernen, okay?

53
00:03:08,540 --> 00:03:12,870
‫Und lassen Sie mich Ihnen das zuerst zeigen, also haben wir

54
00:03:12,870 --> 00:03:16,880
‫hier unten immer diesen Unterstrich Unterstrich V, der auf

55
00:03:16,880 --> 00:03:21,000
‫Null gesetzt ist, und Mongodbs erstellt diese Felder einfach, weil

56
00:03:21,000 --> 00:03:23,020
‫es sie intern verwendet.

57
00:03:23,020 --> 00:03:25,850
‫Und wir könnten sie deaktivieren, aber das ist keine gute Praxis.

58
00:03:25,850 --> 00:03:29,094
‫Auch hier, weil Mongodbs sie tatsächlich verwendet, in Ordnung, aber was

59
00:03:29,094 --> 00:03:31,530
‫wir tun können, ist, sie grundsätzlich nie

60
00:03:31,530 --> 00:03:34,725
‫an den Client zu senden, damit wir sie ausschließen können.

61
00:03:34,725 --> 00:03:38,470
‫Und die Art und Weise, wie wir dies tun, besteht darin,

62
00:03:38,470 --> 00:03:41,290
‫anstatt wie zuvor V zu unterstreichen, wie

63
00:03:41,290 --> 00:03:43,320
‫wir es hier oben gemacht

64
00:03:43,320 --> 00:03:46,490
‫haben, im Grunde genommen nur ein Minus vorangestellt, okay?

65
00:03:46,490 --> 00:03:49,860
‫Und minus ist dann nicht einschließend, sondern ausschließend.

66
00:03:49,860 --> 00:03:51,690
‫Also, was wir hier noch

67
00:03:51,690 --> 00:03:53,900
‫einmal hatten, mit dem Namen und der Dauer

68
00:03:53,900 --> 00:03:56,890
‫und dem Preis, war, diese Felder in die Antwort aufzunehmen.

69
00:03:56,890 --> 00:03:58,580
‫Aber so, mit

70
00:03:58,580 --> 00:04:02,560
‫dem Minus, haben wir hier alles außer dem V-Feld, okay?

71
00:04:02,560 --> 00:04:05,903
‫Wir schließen also nur dieses Feld aus, in Ordnung?

72
00:04:07,060 --> 00:04:08,660
‫Also lass uns weitermachen und das testen.

73
00:04:09,870 --> 00:04:14,870
‫Versende es, und warten wir es ab und ja, ja, die

74
00:04:15,430 --> 00:04:18,250
‫ID ist standardmäßig immer inklusive, okay?

75
00:04:18,250 --> 00:04:21,140
‫Wir können das also nicht entfernen, aber ansonsten

76
00:04:21,140 --> 00:04:24,700
‫haben wir nur den Namen, die Dauer, den Schwierigkeitsgrad und

77
00:04:24,700 --> 00:04:28,360
‫den Preis, okay, und wir könnten natürlich auch dieses Minus

78
00:04:28,360 --> 00:04:31,070
‫verwenden, damit dieser Ausschluss auch hier stattfindet.

79
00:04:31,070 --> 00:04:33,570
‫Wir könnten also alles haben, zum Beispiel abzüglich

80
00:04:33,570 --> 00:04:35,653
‫des Namens und abzüglich der Dauer.

81
00:04:38,280 --> 00:04:40,200
‫Lassen Sie uns das also auch testen.

82
00:04:40,200 --> 00:04:44,160
‫Wenn Sie es jetzt aktivieren, sehen Sie den Namen

83
00:04:44,160 --> 00:04:46,853
‫und die Dauer hier nirgendwo.

84
00:04:48,635 --> 00:04:50,690
‫Okay, und jetzt nur als

85
00:04:50,690 --> 00:04:53,670
‫letzten Test, sehen wir, ob unsere Standardeinstellung auch funktioniert.

86
00:04:53,670 --> 00:04:56,930
‫Senden der Antwort und so, jetzt haben wir

87
00:04:56,930 --> 00:05:01,410
‫diese V-Variable hier nicht mehr in allen Dokumenten auf Null gesetzt.

88
00:05:01,410 --> 00:05:04,840
‫Alles klar, toll, jetzt möchte ich Ihnen noch etwas

89
00:05:04,840 --> 00:05:06,520
‫zeigen, dass wir

90
00:05:06,520 --> 00:05:09,950
‫auch Felder direkt aus dem Schema ausschließen können.

91
00:05:09,950 --> 00:05:11,680
‫Okay, und das kann sehr

92
00:05:11,680 --> 00:05:13,573
‫nützlich sein, wenn wir zum Beispiel sensible

93
00:05:13,573 --> 00:05:15,720
‫Daten haben, die nur intern verwendet werden sollen.

94
00:05:15,720 --> 00:05:17,261
‫Zum Beispiel sollten

95
00:05:17,261 --> 00:05:19,750
‫Dinge wie Passwörter niemals für den Client offengelegt

96
00:05:19,750 --> 00:05:21,320
‫werden, und daher können wir

97
00:05:21,320 --> 00:05:23,372
‫einige Felder direkt im Schema ausschließen.

98
00:05:23,372 --> 00:05:26,320
‫So möchten wir beispielsweise nicht, dass

99
00:05:26,320 --> 00:05:29,780
‫der Benutzer sieht, wann genau jede Tour erstellt wurde.

100
00:05:29,780 --> 00:05:31,950
‫Tour könnte zum Beispiel schon

101
00:05:31,950 --> 00:05:34,020
‫etwas alt sein

102
00:05:34,020 --> 00:05:38,320
‫oder so und so wollen wir dieses CreatedAt-Feld immer ausblenden,

103
00:05:38,320 --> 00:05:40,753
‫in Ordnung, damit wir in

104
00:05:42,050 --> 00:05:44,800
‫unser Schema gehen können, das sich

105
00:05:44,800 --> 00:05:47,950
‫natürlich im Tourmodell befindet, und dann bei

106
00:05:47,950 --> 00:05:52,023
‫createdAt, wir setzen hier einfach die select-Eigenschaft auf false.

107
00:05:54,050 --> 00:05:58,090
‫Und jetzt, wenn wir versuchen, unsere Ergebnisse zu erhalten, sehen Sie, dass

108
00:05:58,090 --> 00:06:00,490
‫es tatsächlich nicht mehr da ist, okay?

109
00:06:02,090 --> 00:06:03,460
‫Auf diese Weise

110
00:06:03,460 --> 00:06:06,690
‫können wir dies im Grunde dauerhaft aus der Ausgabe ausblenden.

111
00:06:06,690 --> 00:06:11,110
‫Perfekt, also eine weitere Funktion, die jetzt tatsächlich funktioniert, und gehen

112
00:06:11,110 --> 00:06:13,723
‫wir jetzt direkt zum nächsten über.

