我从Mongoose网站上快速入手,我几乎复制了代码,但我无法使用Node.js连接MongoDB.
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); exports.test = function(req, res) { var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); console.log("h1"); db.once('open', function callback () { console.log("h"); }); res.render('test'); };
这是我的代码.控制台只打印h1
,而不是h
.我哪里错了?
当您致电时mongoose.connect
,它将与数据库建立连接.
但是,您open
在稍后的某个时间点(当处理请求时)附加事件侦听器,这意味着连接可能已经处于活动状态并且open
事件已经被调用(您刚刚还没有侦听它) .
您应该重新排列代码,以便事件处理程序尽可能接近(及时)连接调用:
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function callback () { console.log("h"); }); exports.test = function(req,res) { res.render('test'); };
最安全的方法是"监听连接事件".这样,您无需关心DB为您提供连接所需的时间.
完成后 - 您应该启动服务器.另外.. config.MONGOOSE在您的应用中公开,因此您只有一个数据库连接.
如果你想使用mongoose的连接,只需要在你的模块中配置config,然后调用config.Mongoose.希望这有助于某人!
这是代码.
var mongoURI; mongoose.connection.on("open", function(ref) { console.log("Connected to mongo server."); return start_up(); }); mongoose.connection.on("error", function(err) { console.log("Could not connect to mongo server!"); return console.log(err); }); mongoURI = "mongodb://localhost/dbanme"; config.MONGOOSE = mongoose.connect(mongoURI);