‫Kursleiter: Als nächstes Feature in unserer
‫API haben wir die
‫Feldbegrenzung, also im Grunde, damit Kunden auswählen
‫können, welche Felder sie
‫in der Antwort zurückgeben möchten.
‫Für einen Client ist es daher immer
‫ideal, so wenig Daten wie möglich
‫zu erhalten, um die Bandbreite
‫zu reduzieren, die bei jeder Anfrage verbraucht wird.
‫Und das gilt natürlich
‫besonders, wenn wir wirklich datenintensive Datensätze haben, oder?
‫Es ist also eine
‫sehr nette Funktion, dem API-Benutzer zu ermöglichen, nur einige der Felder anzufordern.
‫Als dritte Funktion haben wir die Feldbegrenzung.
‫Und lassen Sie mich wie zuvor damit beginnen, Ihnen zu
‫zeigen, wie es hier in Postman funktionieren wird.
‫Wir werden also ein Feld namens "fields" angeben und dann
‫den Namen der
‫Felder, die wir tatsächlich empfangen möchten.
‫Sagen wir also, wir
‫wollen
‫nur den Namen, die Dauer, den Schwierigkeitsgrad und den Preis.
‫Die Implementierung wird also derjenigen, die wir zuvor beim Sortieren
‫gemacht haben, sehr ähnlich sein.
‫Also ggf. Anfrage. Felder, dann erstellen
‫wir hier tatsächlich wieder
‫eine Variable für diese Felder, denn genau wie zuvor fordert
‫Mongodbs tatsächlich eine Zeichenfolge mit
‫dem durch Leerzeichen getrennten Feldnamen an, in Ordnung?
‫Lassen Sie mich nun
‫damit beginnen, diesen Teil aufzuschreiben, okay, also die Abfrage selbst.
‫Abfrage ist also gleich Abfrage. auswählen, okay?
‫Und hier erwartet es zum Beispiel eine
‫Zeichenfolge wie, Name, dann Leerzeichen, Dauer und zum Beispiel ein Preis, okay.
‫Auf diese Weise werden
‫nur diese drei Feldnamen ausgewählt und
‫das Ergebnis nur mit diesen zurückgesendet, okay?
‫Und eigentlich wird dieser
‫Vorgang, bei dem nur bestimmte Feldnamen ausgewählt werden, als Projektion bezeichnet, okay?
‫Also, lass uns jetzt weitermachen und
‫im Grunde die Saite erstellen, genau wie wir es dort oben gemacht haben.
‫Wir beginnen also mit req. Anfrage. Felder, dann trennen wir es durch
‫ein Komma und verbinden
‫es mit einer leeren Zeichenfolge.
‫Mit einem Leerzeichen eigentlich, sorry.
‫Also mit dem Leerzeichen
‫und so wird genau dieser String mit diesem genauen Format erzeugt.
‫Dann brauchen wir hier nur noch diese Felder zu verwenden.
‫Dann möchte ich wie zuvor
‫auch einen Standardwert hinzufügen, falls der Benutzer
‫das Feld "Felder" nicht angibt, okay,
‫in diesem Fall werden wir einfach etwas entfernen, okay?
‫Und lassen Sie mich Ihnen das zuerst zeigen, also haben wir
‫hier unten immer diesen Unterstrich Unterstrich V, der auf
‫Null gesetzt ist, und Mongodbs erstellt diese Felder einfach, weil
‫es sie intern verwendet.
‫Und wir könnten sie deaktivieren, aber das ist keine gute Praxis.
‫Auch hier, weil Mongodbs sie tatsächlich verwendet, in Ordnung, aber was
‫wir tun können, ist, sie grundsätzlich nie
‫an den Client zu senden, damit wir sie ausschließen können.
‫Und die Art und Weise, wie wir dies tun, besteht darin,
‫anstatt wie zuvor V zu unterstreichen, wie
‫wir es hier oben gemacht
‫haben, im Grunde genommen nur ein Minus vorangestellt, okay?
‫Und minus ist dann nicht einschließend, sondern ausschließend.
‫Also, was wir hier noch
‫einmal hatten, mit dem Namen und der Dauer
‫und dem Preis, war, diese Felder in die Antwort aufzunehmen.
‫Aber so, mit
‫dem Minus, haben wir hier alles außer dem V-Feld, okay?
‫Wir schließen also nur dieses Feld aus, in Ordnung?
‫Also lass uns weitermachen und das testen.
‫Versende es, und warten wir es ab und ja, ja, die
‫ID ist standardmäßig immer inklusive, okay?
‫Wir können das also nicht entfernen, aber ansonsten
‫haben wir nur den Namen, die Dauer, den Schwierigkeitsgrad und
‫den Preis, okay, und wir könnten natürlich auch dieses Minus
‫verwenden, damit dieser Ausschluss auch hier stattfindet.
‫Wir könnten also alles haben, zum Beispiel abzüglich
‫des Namens und abzüglich der Dauer.
‫Lassen Sie uns das also auch testen.
‫Wenn Sie es jetzt aktivieren, sehen Sie den Namen
‫und die Dauer hier nirgendwo.
‫Okay, und jetzt nur als
‫letzten Test, sehen wir, ob unsere Standardeinstellung auch funktioniert.
‫Senden der Antwort und so, jetzt haben wir
‫diese V-Variable hier nicht mehr in allen Dokumenten auf Null gesetzt.
‫Alles klar, toll, jetzt möchte ich Ihnen noch etwas
‫zeigen, dass wir
‫auch Felder direkt aus dem Schema ausschließen können.
‫Okay, und das kann sehr
‫nützlich sein, wenn wir zum Beispiel sensible
‫Daten haben, die nur intern verwendet werden sollen.
‫Zum Beispiel sollten
‫Dinge wie Passwörter niemals für den Client offengelegt
‫werden, und daher können wir
‫einige Felder direkt im Schema ausschließen.
‫So möchten wir beispielsweise nicht, dass
‫der Benutzer sieht, wann genau jede Tour erstellt wurde.
‫Tour könnte zum Beispiel schon
‫etwas alt sein
‫oder so und so wollen wir dieses CreatedAt-Feld immer ausblenden,
‫in Ordnung, damit wir in
‫unser Schema gehen können, das sich
‫natürlich im Tourmodell befindet, und dann bei
‫createdAt, wir setzen hier einfach die select-Eigenschaft auf false.
‫Und jetzt, wenn wir versuchen, unsere Ergebnisse zu erhalten, sehen Sie, dass
‫es tatsächlich nicht mehr da ist, okay?
‫Auf diese Weise
‫können wir dies im Grunde dauerhaft aus der Ausgabe ausblenden.
‫Perfekt, also eine weitere Funktion, die jetzt tatsächlich funktioniert, und gehen
‫wir jetzt direkt zum nächsten über.