Warum speichert MongoDB meine Eigenschaften nicht?

8

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%     
Jason94 26.11.2015, 21:17
quelle

5 Antworten

5

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%     
Lisa Gagarina 26.11.2015 21:37
quelle
4

Bitte versuchen Sie es mit diesem Code:

%Vor%     
Nazmul Hossain 02.12.2015 16:24
quelle
3

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.

    
Rahil051 05.12.2015 16:26
quelle
2

Sie müssen name Schlüssel in Ihrem Benutzer Schema definieren, damit es gespeichert wird.

%Vor%     
Kunal Kapadia 26.11.2015 21:35
quelle
2

Hier ist Ihr Code und es funktioniert. Ich habe nur die module.exports mit var User geändert, um den Code auf einer einzelnen Seite zu sammeln.

Also, gibt es vielleicht ein anderes Problem?

Viel Glück ...

%Vor%

Postman Ergebnisse;

    
efkan 05.12.2015 16:12
quelle