2016-05-17 73 views
0

下面是我在app.js文件中的代碼。當我執行這個代碼時,它將連接到MongoDB並顯示「連接到數據庫」消息 。從Node.js連接到MongoDB導致Node掛起

但是,一旦消息顯示,我期待程序結束; 而是程序繼續運行。

爲什麼程序繼續運行並且在打印文本後沒有結束?

const mongodb = require('mongodb'); 
const co = require('co'); 

const MongoClient = mongodb.MongoClient; 
const url = "mongodb://localhost:27017/test9"; 

co(function *() { 
    db = yield MongoClient.connect(url); 
    console.log('Connected to DB'); 
}); 

回答

1

因爲你不關閉連接,節點不知道,你用它做,它會保持運行。

當您關閉它,該過程將正確退出:

co(function *() { 
    let db = yield MongoClient.connect(url); 
    console.log('Connected to DB'); 
    yield db.close(); 
}); 
+0

有一個問題,如果我添加產量app.listen(3009,函數(){ 的console.log('連接到服務器。 '); }); 「'連接到數據庫'之後,爲什麼不打印'連接到服務器'。 ,這是正確的方法。謝謝 – refactor

+1

'yield'只適用於[_「yieldables」_](https://www.npmjs.com/package/co#yieldables),我很確定這個'app。 listen()'不會返回一個 – robertklep

+0

我很抱歉延長,我的意圖是隻有在連接到MongoDB後才能「聽」,那麼需要修改哪些內容? – refactor