2016-08-24 3 views
1

Wenn ich den folgenden Code ausführen, der sequenziell mit MongoDB verbindet, dann schließt mit async.waterfall in Javascript, das Programm nicht wie erwartet beendet. Stattdessen scheint es, nur zu warten, nach der ‚DB geschlossen“ Linie.Warum endet meine async.waterfall Javascript sequenzielle Code nicht?

$ node test-async2.js 
hit connectMongo 
Connected correctly to server, DB: notes 
hit closeMongo 
DB closed 

[program just waits here, doesn't end] 

ich das Programm erwartet. Ende, was Fehler bin ich?

const 
    async = require('async'), 
    MongoClient = require('mongodb').MongoClient, 
    url = 'mongodb://localhost:27017/notes';  

function connectMongo(next) { 
    console.log('hit connectMongo'); 
    MongoClient.connect(url, function(err, db) { 
    console.log("Connected to server, DB: " + db.databaseName); 
    next(null, db); 
    }); 
} 

function closeMongo(db, next) { 
    console.log('hit closeMongo'); 
    db.close; 
    next(null, "DB closed"); 
} 

// perform connect then close sequentially 
async.waterfall([ 
    connectMongo, 
    closeMongo, 
], function (err, result) { 
    if (err) throw err; 
    console.log(result); 
}); 
+0

Was Sie von 'das Programm bedeuten end.'? Was auch immer in den Code geschrieben, ist das, was ist Ich denke, "ctrl + c" wird helfen Sie stoppen Ihr Programm. Ich denke nicht, dass es automatisch endet. – Shrabanee

+2

Rufst du 'nah' an? Es gibt keine Klammern. – cartant

+1

@cartant - das ist es, vielen Dank. Ich hatte so lange auf den Code gestarrt, dass ich keinen dummen Fehler sehen konnte. Danke noch einmal !!! – Jon

Antwort

2

Try db.close() mache statt db.close

fügen Sie außerdem einen Rückruf auf Fehler zu überprüfen, um db.Close beim Schließen.

+1

vielen dank @Tom, ich konnte den dummen Fehler nicht sehen, der direkt vor mir war. Guter Punkt auch über das Überprüfen auf Fehler beim Schließen - nochmals vielen Dank. – Jon

Verwandte Themen