‫-: In diesem Video implementieren wir die Dokumentaktualisierung.
‫Beginnen wir also hier in unserem Update-Tour-Handler damit, eine
‫asynchrone Funktion daraus zu machen.
‫Dann, oder versuchen Sie es mit catch block, und das
‫mache ich jetzt sehr schnell, weil wir uns jetzt schon daran
‫gewöhnt haben.
‫Rechts?
‫Das geht also in den try-Block und
‫dann hole ich diesen hier einfach aus dem catch-Block dieser
‫anderen Funktion.
‫Also gut.
‫Auf geht's.
‫Und jetzt müssen wir
‫hier am Anfang dieses Versuchsblocks
‫im Grunde genommen das Dokument abfragen, das
‫wir aktualisieren möchten, und es dann aktualisieren, in Ordnung?
‫Und das können
‫wir mit Mungo tatsächlich in einem Befehl tun.
‫Und denken Sie noch einmal daran, dass wir die Tour
‫basierend auf einer ID aktualisieren werden, okay?
‫Es ist also eine ähnliche Situation wie hier, wo
‫wir nach ID finden.
‫Und jetzt können wir tatsächlich etwas sehr
‫Ähnliches tun, nämlich anhand von IDs und Updates finden.
‫Also wieder alles in einer Abfrage.
‫Also, lass uns eine Tour machen.
‫findByID und aktualisieren.
‫Okay, was müssen wir hier reingeben?
‫Nun, natürlich die ID, damit wir zuerst das Dokument finden,
‫das aktualisiert werden soll.
‫Das ist also, genau wie zuvor, req. Parameter. ID und
‫dann die Daten, die wir eigentlich ändern wollen.
‫Und diese Daten werden im Hauptteil sein,
‫genau wie in der Post-Anfrage.
‫Also erf. Körper, okay?
‫Und dann, eigentlich als drittes Argument,
‫können wir auch einige Optionen einpatchen, und das werden wir tun.
‫Und die erste Option, die ich angeben möchte, ist new
‫und setze sie auf true.
‫Denn auf diese Weise wird das
‫neue aktualisierte Dokument zurückgegeben.
‫Und da wir dieses aktualisierte Dokument an
‫den Client zurücksenden möchten, möchten wir
‫immer, dass diese Methode dieses neue Dokument tatsächlich zurückgibt, okay?
‫Auf diese Weise ist es dann tatsächlich sinnvoll,
‫diese Abfrage abzuwarten und dann in einer neuen Variablen zu speichern.
‫Also dann einfach hier
‫Tour nennen und dann wieder das Ergebnis dieser Abfrage abwarten.
‫Alle diese Methoden, die wir bisher auf
‫der Tour verwendet haben, also nach ID suchen und aktualisieren,
‫oder, na ja, nicht wirklich erstellen, sondern nach ID suchen oder
‫suchen, all dies gibt Abfragen zurück, also sind sie Abfragen Methoden
‫und lassen Sie mich
‫Ihnen das in der Mungo-Dokumentation tatsächlich zeigen.
‫Bis zu diesem Zeitpunkt haben wir uns die
‫Dokumentation also noch nicht angesehen.
‫Also, lass uns das schnell tun.
‫In dem Modell, das in unserem Fall Tour ist,
‫haben wir also alle diese Abfragemethoden, richtig?
‫Sie sehen also "Suchen", "Einen finden", "Suchen nach ID", was nur
‫eine Abkürzung für "Einen finden" ist.
‫Dann sehen Sie nach ID suchen und aktualisieren,
‫dies ist diejenige, die
‫wir derzeit verwenden, und die tatsächlich nur eine
‫Abkürzung für die Suche nach einer ID ist und die wir nach einer
‫ID abfragen, so ähnlich wie wir hatte in der letzten Vorlesung, okay?
‫Und tatsächlich können wir auf eine davon klicken, also
‫lass uns diejenige tun, die wir
‫gerade verwenden, und das führt uns dann wirklich zur API-Dokumentation,
‫die uns zeigt, wie man eine bestimmte Methode wirklich verwendet.
‫Sie sehen also, dass wir die
‫ID, also den Wert, von der abzufragenden ID, das
‫Objekt mit den zu aktualisierenden Daten und ein Optionsobjekt übergeben haben.
‫Und hier unten können wir tatsächlich
‫die Optionen sehen, die wir einstellen können,
‫also denken Sie daran, wir setzen einfach new auf true, und
‫wie hier gesagt, wird dann das geänderte Dokument und
‫nicht das Original zurückgegeben.
‫Nun, eine andere, die wir eigentlich auf
‫"true" setzen möchten, ist die Ausführung von Validatoren, damit jedes Mal,
‫wenn wir ein bestimmtes Dokument aktualisieren, die Validatoren, die
‫wir im Schema angegeben haben, erneut ausgeführt werden, okay?
‫Und wir werden später in diesem Abschnitt viel über
‫Validatoren und Validierung sprechen,
‫aber ich werde es hier belassen, damit wir es im Grunde
‫nicht vergessen.
‫Okay?
‫Sparen Sie jetzt, und eigentlich möchte ich hierher zurückkehren, nur
‫um Ihnen zu zeigen, wie
‫viele Methoden wir tatsächlich bei Mungos haben.
‫Im Modell haben wir also alle diese Methoden hier, die Sie
‫in dieser Liste sehen.
‫So haben wir zum Beispiel vorher create verwendet, wir
‫haben auch find verwendet.
‫Okay?
‫Und die, die Sie hier oben sehen, sind
‫direkt am Modell verfügbar, und das ist
‫in unserem Fall die Tour.
‫Nun, hier unten sehen Sie zum
‫Beispiel auch Modell. Prototyp. sicher zum Beispiel.
‫Und diesen haben wir eigentlich
‫auch schon genutzt, als wir anfingen, mit Mungo zu arbeiten.
‫Ich bin mir also nicht sicher, ob Sie damit
‫vertraut sind, aber im Java-Skriptmodell. Prototyp bedeutet immer
‫ein Objekt, das aus einer Klasse oder in diesem Fall
‫aus einem Modell erstellt wurde.
‫Die Methode save bezieht sich hier also auf eine Save-Methode, die
‫für ein Dokument und nicht für eine Tour aufgerufen wird.
‫Und denken Sie daran, dass wir genau das getan haben.
‫Und ich glaube, ich habe es immer noch als Kommentar hier.
‫Ja, genau hier.
‫Wir hatten also eine Tour, diese neue Tourvariable hier,
‫die aus dem Tourmodell erstellt wurde,
‫und diese neue Tour hier bekam Zugriff auf die Methode
‫save, da diese Teil des Prototypobjekts dieser Klasse ist.
‫In Ordnung, ich möchte Sie jetzt nicht mit den
‫Grundlagen von Java Script langweilen, aber
‫es ist wichtig, um die Dokumentation zu verstehen, okay?
‫Denn irgendwann müssen Sie Dokumentation verwenden, denn
‫Mungo ist Yute.
‫Und ich werde Ihnen während des
‫ganzen Kurses viele wichtige Dinge beibringen, aber manchmal brauchen
‫Sie immer noch etwas, was ich Ihnen in diesem
‫Kurs nicht gezeigt habe.
‫Daher ist es wichtig, dass
‫Sie die Dokumentation auch wirklich verstehen, okay?
‫Und so wieder, wenn Sie ein Modell sehen. Prototyp hier, Sie
‫wissen, dass die Speichermethode hier
‫für alle Instanzen verfügbar sein wird, die
‫durch ein Modell erstellt wurden, okay?
‫Also nicht das Modell selbst.
‫Also zum Beispiel, wenn Sie Tour versucht haben. außer Sie
‫könnten es nicht verwenden.
‫Es würde Ihnen einen Fehler geben, aber wenn Sie stattdessen versuchen,
‫ein Dokument zu speichern, das durch die Tour
‫erstellt wurde, würde es natürlich funktionieren, okay?
‫Ich hoffe das ergibt Sinn.
‫Und wie auch immer, Sie sehen, dass
‫wir noch viele andere Dinge haben, also müssen wir abfragen,
‫worüber wir bereits gesprochen haben, weil zum Beispiel nach ID suchen
‫und aktualisieren oder finden oder nach ID suchen, all das wird Abfrageobjekte zurückgeben.
‫Wenn wir später Dinge
‫wie Sortieren oder Filtern implementieren, verwenden wir dieses Abfrageobjekt.
‫Okay?
‫Also, lass uns zurückgehen, wir sind hier irgendwie vom Weg abgekommen, indem
‫wir uns die Dokumentation angesehen haben, aber ich
‫denke, es ist wirklich wichtig,
‫sich die Dokumentation anzusehen, denn ein
‫Kurs wie dieser kann Sie nur so weit führen, und
‫ich Ich hoffe, du weißt das jetzt schon, okay?
‫Es ist sehr wichtig, dass Sie auch selbst Informationen finden
‫können, und wie das geht, möchte ich Ihnen
‫auch in diesem Kurs zeigen.
‫Wie auch immer, lassen Sie uns diese neu
‫aktualisierte Tour jetzt tatsächlich auch an den Client zurücksenden,
‫was wir im Moment nicht tun,
‫weil wir einfach diese aktualisierte Tour hier-String haben.
‫Also lass uns das loswerden und einfach auf Tour schicken.
‫Und denken Sie daran, dass dies tatsächlich dies ist.
‫Die Tour-Eigenschaft wird also auf das Tour-Objekt gesetzt, aber dank
‫ES6 müssen wir dies nicht mehr tun, wenn
‫der Eigenschaftsname den gleichen Namen wie der Wert hat.
‫Okay, also lass uns das loswerden.
‫Dadurch sieht unser Code etwas besser aus.
‫Okay, und jetzt testen wir es.
‫Zurück zum Postboten, hier haben wir die aktualisierte Tourroute.
‫Also, lassen Sie uns dies
‫mit derselben ID tun, die wir zuvor verwendet haben.
‫Also dieser.
‫Dann kommen wir zum Körper hier und lasst uns ändern--
‫Nun, was werden wir hier ändern?
‫Nun, ändern wir den Preis auf 500.
‫Also, Preis 500, senden Sie es, und
‫tatsächlich erhalten wir das neu aktualisierte Objekt
‫mit dem Preis, der bereits
‫auf 500 festgelegt ist.
‫Und wenn wir jetzt alle Touren bekommen, dann sollte
‫sich das natürlich hier widerspiegeln.
‫Und hier ist es.
‫Aber nehmen wir jetzt an, dass wir es auf einen String setzen.
‫Schauen wir uns dann an, was passiert.
‫Nun, dann bekommen wir tatsächlich einen Fehler.
‫Und das liegt daran, dass wir die Validatoren erneut ausgeführt haben.
‫Denken Sie daran, dass wir-- Wo
‫ist das?
‫Ach ja, hier.
‫Hier legen wir also fest, dass die Validatoren erneut ausgeführt werden sollen.
‫Und so ist der Preis im Moment keine Zahl
‫mehr wie erwartet, oder?
‫In einem Schema sagen wir also, dass der Preis
‫eine Zahl sein sollte, aber natürlich kann
‫Java-Skript oder Mungo diese Zeichenfolge hier im Grunde nicht in eine Zahl umwandeln.
‫Aber das erwarten wir.
‫Hier heißt es also, dass Art eine Zahl sein sollte.
‫Daher gibt es uns einen
‫Fehler, einfach weil wir die Validatoren erneut ausführen.
‫Also setzen wir es zurück auf 500 und dann geht
‫es natürlich wieder.
‫Nun gut, denkt daran, dass wir
‫hier tatsächlich eine Patch-Anfrage stellen.
‫Wenn wir nun eine Put-Anfrage machen würden, denken Sie
‫daran, dass Sie erwarten würden, dass das ursprüngliche
‫Objekt vollständig durch
‫das neue, das gesendet wird, ersetzt wird, okay?
‫In diesem Fall würde es also
‫nicht mehr so funktionieren, wie
‫wir es hier implementiert haben, weil dieses hier einfach
‫wirklich die Felder aktualisiert hat, die hier im Text anders sind, okay?
‫Aber wie auch immer, ich denke, dass die
‫Patch-Methode tatsächlich viel nützlicher ist,
‫und daher wird dies die einzige sein, die hier implementiert wird.
‫Cool, also haben wir drei unserer vier korrekten Operationen
‫implementiert, nur noch eine übrig, die
‫gelöscht wird.