node-mongodb-native - Der Cursor gibt bei jedem Aufruf null als letzten Wert zurück

8

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:

%Vor%

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.

    
m09 30.08.2012, 21:06
quelle

2 Antworten

7

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:

%Vor%

Ich hoffe, es wird jemandem irgendwie ein paar Minuten sparen.

    
m09 30.08.2012, 22:24
quelle
10

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: Ссылка

    
Tom LaMarre 23.06.2015 20:09
quelle