有承诺的节点程序没有完成
我不能为了我的生活找出为什么这不完成:
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立一次连接,然后针对每个请求重新使用该连接。