【发布时间】:2014-11-12 13:25:17
【问题描述】:
我想先连接到 mongodb,然后在我的应用程序中运行其他所有内容。
为此,我必须编写如下内容:
MongoClient.connect("mongodb://localhost/test", function(err, connection) {
if (err) { console.error(err); }
db = connection;
var app = express();
// Include API V1
require("./apiv1.js")(app, db);
app.listen(3000, function(err) {
if (err) { console.error(err); } else { console.log("Started on *:3000"); }
});
});
这使我的应用程序在 .connect 函数中完全缩进...这看起来很丑陋,并且在我处理项目时占用空间。
我认为最好的解决方案是让 MongoDB 连接同步(即使没有数据库连接,我的应用程序也无法运行,为什么我要在连接时执行某些操作?),然后运行我的其余代码。
我该怎么办?
【问题讨论】:
-
这就是 node.js 的工作方式。一切都是异步的和回调的。你无法改变这一点,但我记得读过一些有助于减少代码意大利面的库。不幸的是,我不记得名字了。
-
“最好的解决方案是让 MongoDB 连接同步” - 例如,您可以使用 ruby。
-
是的,您的应用程序包含在
.connect()方法中,但是您将所有逻辑导出到另一个文件中(这是个好主意),我在这里看不到任何丑陋的东西。 -
你可能想看看koa,它使代码看起来更干净(以大量使用 ES6 生成器函数为代价)。
-
您可以使用
mongoose,它具有 IMO 一个很棒的功能,如果您尝试保存某些内容,它会等到建立连接,然后在幕后保存数据!