‫Kursleiter: Willkommen zurück.
‫Bei der Authentifizierung und Autorisierung dreht sich
‫alles darum, dass sich Benutzer anmelden,
‫sich anmelden und auf Seiten oder Routen zugreifen, die
‫wir ihnen dazu erteilen.
‫Es dreht sich also wirklich alles um die Benutzer.
‫Und deshalb müssen wir in dieser Vorlesung damit beginnen, das
‫Benutzermodell zu implementieren, damit wir im
‫nächsten dann neue Benutzer in unserer Datenbank anlegen können.
‫Also, zurück in unserer Anwendung, lassen Sie uns
‫fortfahren und eine neue Datei für das Benutzermodell erstellen.
‫Also natürlich in unserem Modellordner, Neue
‫Datei, userModel. js.
‫Und genau wie zuvor
‫benötigen wir zunächst das Mongoose-Paket.
‫Gut.
‫Und jetzt müssen wir nur noch ein Schema
‫erstellen und daraus ein Modell erstellen.
‫So wie wir es bei den Touren gemacht
‫haben, werden wir es jetzt hier mit den Benutzern machen.
‫Und eigentlich, da wir das schon früher gemacht
‫haben, möchte ich diese hier als Herausforderung für Sie lassen, in Ordnung?
‫Ich möchte, dass Sie ein Schema mit fünf Feldern erstellen.
‫Also Name, E-Mail, dann ein Foto; das
‫wird nur eine Schnur sein, also genau
‫wie bei unseren Touren.
‫Ich möchte auch ein Feld für ein
‫Kennwort und für eine Kennwortbestätigung.
‫Okay?
‫Und dazu später,
‫wenn ich diese Herausforderung für Sie
‫löse, aber jetzt möchte ich wirklich, dass Sie
‫üben, dieses Schema selbst zu erstellen
‫und dann auch ein Modell aus diesem Schema zu erstellen, okay?
‫Und am Ende können Sie es auch exportieren.
‫Bitte pausieren Sie das Video an dieser Stelle, und
‫ich bin in einer Sekunde wieder hier, um
‫diese Herausforderung für Sie zu lösen.
‫Gut.
‫Ich hoffe, Sie haben diese Herausforderung gemeistert.
‫Und so werde ich es jetzt lösen.
‫Und machen Sie sich keine Sorgen, wenn es nicht genau gleich aussieht.
‫Sie können es einfach anpassen, während wir dieses Video durchgehen.
‫Also durch diese Lösung.
‫Also nenne ich das userSchema.
‫Und genau wie zuvor kreieren wir einen neuen Mungo. Schema.
‫Und dann übergeben wir unser Schemaobjekt und
‫beginnen mit der Definition unserer Felder.
‫Also möchte ich natürlich einen Namen vom Typ String.
‫Und ich möchte auch, dass es erforderlich ist.
‫Wenn also ein neuer Benutzer
‫erstellt wird, muss er uns grundsätzlich seinen Namen mitteilen.
‫Setzen wir also auch hier eine Fehlermeldung.
‫„Bitte nennen Sie uns Ihren Namen! " Gut?
‫Das ist also der Name.
‫Als nächstes wollen wir die E-Mail.
‫Gut?
‫Dies wird also für die Anmeldung des
‫Benutzers verwendet und wir werden hier keine Benutzernamenseigenschaft erstellen, okay?
‫In einigen Anwendungen wird also ein Benutzername verwendet,
‫aber in diesem Fall möchten wir
‫es hier einfach halten und Benutzer einfach per E-Mail identifizieren.
‫Dies wiederum ist vom Typ String.
‫Es ist auch ein Pflichtfeld.
‫Also nochmal eine Fehlermeldung.
‫Als nächstes möchte ich, dass E-Mails auch einzigartig sind, okay?
‫Also, unique auf true gesetzt.
‫Und das liegt im Grunde daran, dass
‫diese E-Mail natürlich die eindeutige Kennung jedes Benutzers ist, okay?
‫E-Mails sollten jetzt standardmäßig eindeutig sein, oder?
‫Aber lassen Sie uns hier einfach 100% sicher
‫sein, dass es
‫keine Konten mit derselben E-Mail-Adresse geben wird, in Ordnung?
‫Jetzt können wir hier auch eine andere Schematypoption
‫angeben, die Kleinbuchstaben ist.
‫Das ist also ein neues.
‫Und es ist kein Validator.
‫Alles, was es tun wird,
‫ist, die E-Mail im Grunde in Kleinbuchstaben umzuwandeln.
‫Wenn also jemand wie Jonas@Gmail oder was auch immer sagt, dann
‫wird das alles in Kleinbuchstaben umgewandelt.
‫Okay?
‫Und nun endlich wollen wir auch die
‫E-Mail-Adresse tatsächlich validieren.
‫Testen Sie also grundsätzlich, ob
‫die bereitgestellte E-Mail dem gängigen E-Mail-Format entspricht, in Ordnung?
‫Also zum Beispiel wieder jonas@gmail. com wäre eine gültige E-Mail,
‫aber zum
‫Beispiel wäre dies nicht der Fall.
‫Oder so.
‫Und dafür müssen wir im Grunde unseren
‫eigenen Validator erstellen.
‫Jetzt werden wir dafür keinen eigenen
‫Validator erstellen, sondern stattdessen das Validator-Paket verwenden, das
‫ich Ihnen zuvor von npm gezeigt habe, richtig?
‫Denken Sie also daran, hier im tourModel habe ich Ihnen
‫dieses Modul tatsächlich hier gezeigt, aber dann
‫haben wir es nicht verwendet,
‫weil es in unserem Fall nicht wirklich nützlich war.
‫Aber jetzt wird es sehr nützlich
‫sein, und deshalb kopiere ich es hierher, okay,
‫damit wir es jetzt direkt in unserem Schema verwenden können.
‫Um nun unseren benutzerdefinierten Validator zu erstellen, verwenden
‫wir validieren, erinnerst du dich?
‫Und dann übergeben wir die Funktion
‫anti-error message, genau wie bei unseren anderen Validatoren.
‫Und um zu überprüfen, ob
‫eine E-Mail gültig ist, müssen wir nur die isEmail-Methode für
‫das Validator-Objekt aufrufen, okay?
‫Das kommt also wieder aus der Dokumentation, die
‫ich Ihnen zuvor gezeigt habe, als wir dieses Modul zum ersten Mal verwendet haben.
‫Wenn Sie also einen benutzerdefinierten Validator benötigen,
‫können Sie in der Dokumentation
‫nachsehen, ob es eine gute Funktion für Ihren Anwendungsfall gibt.
‫In diesem Fall ist das also der Validator. E-Mail, und
‫unsere Fehlermeldung wird
‫"eine gültige E-Mail" sein, okay?
‫Und wenn wir im nächsten Video Benutzer aus
‫diesem Modell erstellen, werden wir das alles natürlich testen, um zu
‫sehen, ob es funktioniert.
‫Als nächstes möchte ich auch, dass der
‫Benutzer grundsätzlich ein Foto hochladen kann.
‫Und das speichern wir einfach in einem String.
‫Aber es ist nicht erforderlich, okay?
‫Ein Foto ist in den meisten Webanwendungen also normalerweise optional, und daher
‫werden wir hier dasselbe tun.
‫Wenn der Benutzer also ein
‫Foto hochladen möchte, wird es irgendwo in unserem Dateisystem
‫gespeichert und der Pfad zu diesem Foto
‫wird dann in diesem Fotofeld gespeichert, okay?
‫Das ist also ähnlich dem, was wir hier hatten.
‫Denken Sie daran, wir
‫haben, ja, wir haben imageCover,
‫und das ist auch einfach der Pfad
‫der Stelle in unserem Dateisystem, an
‫der das Bild tatsächlich hochgeladen wird.
‫Gut?
‫Das ist also Foto.
‫Und jetzt brauchen wir ein Passwort.
‫Und das Passwort sollte wieder vom Typ String sein.
‫Das ist nicht richtig.
‫Und das Passwort ist natürlich erforderlich, oder?
‫So wahr.
‫"Geben Sie ein Passwort an. "Und
‫wir werden auch eine sehr einfache Passwortregel aufstellen,
‫die besagt, dass ein Passwort mindestens acht
‫Zeichen haben sollte.
‫Also, wie machen wir das?
‫Nun, das ist ganz einfach.
‫Alles, was wir tun müssen, ist
‫minlength und in diesem Fall auf acht zu setzen.
‫Und das ist eigentlich die einzige Passwortregel,
‫die wir auferlegen werden.
‫Und viele Apps haben all diese verrückten
‫Regeln wie mindestens eine Zahl und ein Zeichen und ein Symbol,
‫aber wir werden hier nichts davon
‫implementieren, weil sich herausgestellt
‫hat, dass das nicht wirklich effektiv ist, okay?
‫Normalerweise sind die sichersten
‫Passwörter die längsten, okay, und
‫nicht diese mit den verrückten Symbolen und Zeichen und
‫so weiter.
‫Das reicht für das Passwort für den Moment,
‫aber wir werden hier einige spezifischere Felder
‫für das Passwort erstellen, wenn wir anfangen, Passwörter in der
‫Datenbank zu verwalten, okay?
‫Aber das reicht hier erstmal.
‫Und jetzt heißt es passwordConfirm.
‫Sie wissen also, wie Sie normalerweise beim Erstellen eines
‫neuen Kontos in einer Webanwendung immer
‫Ihr Passwort eingeben und es dann bestätigen müssen, um sicherzugehen, dass
‫es gleich ist.
‫Und dafür ist dieses Feld da.
‫Also natürlich auch vom Typ String.
‫Und natürlich ist es auch erforderlich.
‫Okay.
‫Und wieder werden wir etwas später hier
‫in der schema-type-Option einige weitere Eigenschaften erstellen, okay?
‫Insbesondere Validatoren, um zu sehen, ob das
‫Bestätigungskennwort tatsächlich dasselbe ist wie das Hauptkennwort, in Ordnung?
‫Aber für den Moment reicht dieses Schema eigentlich aus, und
‫daher hat es diese Felder, die ich Sie in der Challenge
‫gebeten habe, zu erstellen.
‫Und jetzt müssen wir eigentlich nur noch
‫das Modell aus dem Schema erstellen.
‫Also der Benutzer, mit einem großen
‫U, nur um der Konvention zu folgen, dass
‫Modellvariablen normalerweise immer mit
‫einem Großbuchstaben gekennzeichnet sind, dann Mungo. model, und übergeben Sie dann den Namen
‫des Modells, und natürlich möchten wir,
‫dass dieses "User" heißt und aus dem zuvor erstellten userSchema erstellt wird.
‫Und dann Modul. exports auf Benutzer eingestellt.
‫Und das ist es.
‫Das ist unser einfaches userSchema, mit dem wir
‫direkt im nächsten Video damit beginnen
‫können, Benutzer zu erstellen.
‫Also bis dahin.