Ich befülle meine Datenbank mit Dummy-Daten, wo ich versuche, einen Benutzer hinzuzufügen. Ein Benutzerobjekt wird erstellt, aber keine der Eigenschaften ist sicher ... whats up?
%Vor%ruft dies auf und gibt "user created" zurück. Hier ist meine Methode, um alle Benutzer auszugeben:
%Vor%Die Ausgabe hier ist
%Vor%Wo ich versucht habe, "Nick" ein paar Mal nee ... irgendwelche Eingabe hinzuzufügen? : D
Mein Mongoose-Modell befindet sich in einer eigenen Model.js-Datei mit anderen Modellen:
%Vor%Wenn Sie einen Namen in Ihrem Benutzerschema haben, müssen Sie auch warten, bis Ihre save () - Abfrage beendet ist, und dann eine Antwort senden:
%Vor%Die von Ihnen aufgerufene Funktion save () ist nicht korrekt und folgt dem Muster anderer Sprachen als Node.js.
Die Funktionsweise von Node.js unterscheidet sich grundlegend von anderen Sprachen wie Java, PHP, Ruby, ASP.net und so weiter Javascript ist völlig asynchron und Node.js hat es als ereignisgesteuerte und nicht blockierende I / O verbessert. Die Codeausführung wird also nicht fortgesetzt, es sei denn, sie hat eine Antwort von der Funktion erhalten, in der sie liegt.
Nachdem die save () -Methode ausgeführt wurde, antwortet sie daher mit einer Rückruffunktion, die eine Beendigungsantwort an node.js sendet, um andere Ausführungen auszulösen. Der richtige Code wird
sein %Vor%Sie sehen also, sobald die Methode save () fertig ist, antwortet sie die Antwort, dh err und savedUser in einem Callback, anstatt sie zurückzugeben, und jeder einzelne Code nach der Speichermethode wird geschrieben in diesem Rückruf.
Wenn wir Ihren Code eine Minute lang analysieren und analysieren, was das Problem ist,
%Vor%Wenn die save () -Methode aufgerufen wird, sendet node.js die Daten zusammen mit insert trigger an mongodb und geht mit dem Rest der Codeausführung weiter. Und dieser Code druckt "Erfolg", auch wenn die Daten noch nicht gespeichert sind. Daher hat fast jede Methode in Node.js einen Rückruf, da es der letzte Parameter ist, der einen Hinweis auf die Beendigung sendet.
Sie müssen name Schlüssel in Ihrem Benutzer Schema definieren, damit es gespeichert wird.
%Vor%Tags und Links javascript node.js mongodb mongoose