CSn*_*erd 17 mongoose mongodb node.js
我从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');
};
Run Code Online (Sandbox Code Playgroud)
这是我的代码.控制台只打印h1,而不是h.我哪里错了?
rob*_*lep 23
当您致电时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');
};
Run Code Online (Sandbox Code Playgroud)
fin*_*ino 11
最安全的方法是"监听连接事件".这样,您无需关心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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62347 次 |
| 最近记录: |