我不能为我的生活弄清楚为什么没有完成:
var pmongo = require('promised-mongo');
var db = pmongo('mongodb://localhost/builder');
var block_id = '538d097bbb12479d0e9f70ab';
var collection = db.collection('block');
collection.findOne({_id:db.ObjectId(block_id)})
.then(function(result) {
console.dir(result);
}).done();
它基本上只是挂起。 findOne返回一个promise,我正在调用。奇怪的是,当我关闭数据库(即db.close())时,它就完成了。
我试图通过express来处理这个问题,所以我真的不想关闭数据库。有什么诀窍????
答案 0 :(得分:5)
MongoDB连接旨在持久化。您可以创建其中一个(或它们的池),然后在整个应用程序中重用该连接。
此持久网络连接将使node.js进程保持活动状态,因此当您要关闭节点进程时,必须手动关闭连接。这是数据库连接的常见模式,如果您连接到MySQL,也会发生同样的事情。
在express.js应用程序中,只需在文件顶部建立一次连接,然后为每个请求重新使用该连接。