2016-08-24 13 views
1

次のコードを実行すると、MongoDBに順番に接続され、javascriptでasync.waterfallを使用して閉じます。プログラムは期待どおりに終了しません。代わりに、単に「DB閉」行の後に待つように表示されます。なぜ私のasync.waterfall JavaScriptのシーケンシャルコードが終了しないのですか?

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

[program just waits here, doesn't end] 

は、私が終了するプログラムを期待していた。私は?

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

あなたがこれまでのコードで書かれた何?end.'するプログラム 'によって何を意味するか、それが何であるかであります私は 'ctrl + c'が助けになると思いますあなたはあなたのプログラムを止める。私はそれが自動的に終了するとは思わない。 – Shrabanee

+2

'close'と呼んでいますか?カッコはありません。 – cartant

+1

@cartant - それで、ありがとう。私はちょうど愚かな間違いを見ることができなかったので、コードを見つめていました。再度、感謝します !!! – Jon

答えて

2

するTry db.close()の代わりを作っていますどのような間違いまた

をdb.close、閉じているときにエラーをチェックするためにdb.closeするコールバックを追加します。

+1

多くのおかげで@トム、私は私の前にあったばかげたミスを見ることができませんでした。終了時にエラーをチェックすることについても良い点 - おかげで再び。 – Jon

関連する問題