我正在尝试创建一个基于 node.js 的网站,我将在其中将信息保存在 mongodb
我的 APP.JS 文件如下
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, mongo = require('mongodb')
, monk = require('monk');
var db = monk('localhost:27017/nodetest1');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.use(function(req,res,next){
req.db = db;
next();
});
// Routes
app.get('/', routes.index);
app.get('/helloworld', routes.helloworld);
app.get('/userlist', routes.userlist);
//app.use('/users', users);
app.listen(3000, function(){
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});
我在路由目录中的 INDEX.JS 文件如下所示
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
exports.helloworld = function(req, res){
res.render('helloworld', { title: 'Express: Hello World' })
};
exports.userlist = function(req, res){
var db = req.db;
var collection = db.get('usercollection');
collection.find({},{},function(e,docs){
res.render('userlist',{
"userlist":docs
});
});
//res.render('userlist', { title: 'Express: User List' })
};
我已经使用命令提示符创建了用户集合
db.usercollection.insert({ "username" : "testuser1", "email" : "testuser1@testdomain.com" })
查询它使用
db.usercollection.find().pretty()
并收到结果为
{
"_id" : ObjectId("5202b481d2184d390cbf6eca"),
"username" : "testuser1",
"email" : "testuser1@testdomain.com"
}
但是当我尝试使用查看此浏览器的输出时
http://localhost:3000/userlist
然后我收到以下错误
500 TypeError: Cannot read property 'get' of undefined at exports.userlist (/var/www/html/node/nodetest1/routes/index.js:17:21)
当我做
var db = req.db;
console.log(db);
然后在控制台上显示未定义,在浏览器上也显示 db 'undefined' 表示APP.JS 中的 db 对象在 ROUTES/INDEX.JS 中不可用
我对所有这些东西都很陌生,所以需要你的帮助。
此致