Also. Ich habe ein sehr einfaches Skript, das eine Verbindung zu einer Datenbank herstellt und ein find
für eine Sammlung erstellt, die viele Dokumente enthält und auf 3 Elemente beschränkt. Alles läuft reibungslos, außer dass am Ende meiner Ergebnisse ein null
und das Skript nicht beendet wird, anstatt die Verbindung nach dem erfolgreichen Abschluss ruhig zu schließen.
Hier deklariere ich meine Parameter und erstelle mein Datenbankobjekt:
%Vor% Und hier verbinde ich mich mit der Datenbank und fahre fort, sie mit einem find
Cursor und der each
Funktion abzufragen:
Die Ergebnisse sind nett:
%Vor%bis zu dem Punkt, wo ein
%Vor%erscheint.
Wie oben beschrieben, wird das Skript dann nicht beendet.
Ich verstehe nicht warum und würde mich über Hinweise freuen, wie man es schön beenden kann.
Nun, das war dumm. Zu viel Zeit ohne Programmierung in einem asynchronen Setup und Sie machen Fehler: Der Aufruf db.close()
kam, bevor die each
Schleife vorbei war. Hat null
zurückgegeben und deswegen gehängt. Hier ist der korrekte Code:
Ich hoffe, es wird jemandem irgendwie ein paar Minuten sparen.
Diese Frage ist ein paar Jahre alt und hat bereits eine mögliche Antwort, aber ich wollte nur auf eine andere Möglichkeit für jeden hinweisen, der immer noch verwirrt ist, nachdem er das gelesen hat. Es stellt sich heraus, dass each
wiederholt nextObject
aufruft, was eigentlich bedeutet, dass NULL zurückgegeben wird, wenn der Cursor erschöpft ist.
Die Antwort hier war die, die ich brauchte: Node Mongo Native - Wie kann man feststellen, wenn ein Cursor erschöpft ist?
Aus dem Knoten MongoDB-Treiber: Ссылка
Tags und Links javascript node.js mongodb node-mongodb-native