更新:在构建示例时,我发现罪魁祸首似乎是restify-enroute
。包裹正在搞乱猫鼬连接。我将示例发布到https://github.com/HeavyStorm/mongoose-enroute-conflict。
我已经明白mongoose.connect是如何在mongoose和Mongo之间建立连接的,并且假设这是一个单独的连接 - 一旦被调用,我的应用程序中的每个模块都可以调用Mongo。
这可能是错的。
我目前的情况:
我正在呼叫连接:
mongoose.connect("mongodb://localhost/test");
我的应用结构:
/
/app.js
/modules
./users
./module.js
在app.js中,我致电mongoose.connect
。我还加载并公开来自module.js
的路线。当我收到一个http调用时,module.js
代码启动(我可以从调试器中看到),但是一旦我调用mongo(在这种情况下通过Model.find()
),代码就会跳过,我的永远不会在客户端中调用回调来处于等待状态。
但是,如果我将mongoose.connect
行添加到module.js
,则Model.find()几乎立即产生回调,而客户端会收到响应。
TLDR :我是否必须在访问数据库的每个模块上调用mongoose.connect?这是为什么?