有承诺的节点程序没有完成

我不能为了我的生活找出为什么这不完成:

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(); 

它bascially只是挂起。 findOne返回一个承诺,我打电话完成。 奇怪的是,当我closures数据库(即db.close())的时候,它完成。

我试图最终通过快递进行处理,所以我不想closures数据库。 有什么诀窍?

MongoDB连接的目的是持久的。 您可以创build其中的一个(或其中的一个),然后在整个应用程序中重新使用该连接。

这个持续的networking连接将保持node.js进程的活动状态,所以当你想closures节点进程时,必须手动closures连接。 这是数据库连接的常见模式,如果连接到MySQL,则会发生同样的情况。

在express.js应用程序中,只需在文件的顶部build立一次连接,然后针对每个请求重新使用该连接。