2016-05-17 33 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