同步连接到mongodb
我想首先连接到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连接同步(即使因为没有数据库连接,我的应用程序无法工作,所以为什么我应该在连接时做一些事情?)然后运行我的其余代码。
我能怎么做?
回答如下:你不能同步连接到MongoDB,但你可以从你的代码中摆脱这个丑陋的回调。
最好的方法是在node-mongodb-native
driver周围采用一些包装。
看看以下模块。
mongojs
var mongojs = require('mongojs');
var db = mongojs('localhost/test');
var mycollection = db.collection('mycollection');
mongoskin
var mongo = require('mongoskin');
var db = mongo.db("mongodb://localhost:27017/test", {native_parser:true});
monk
var monk = require('monk');
var db = monk('localhost/test');
var users = db.get('users')
当然,内部所有这些都是异步建立MongoDB连接。