mongoDB对象在node.js中的其他模块中不可用

时间:2016-01-07 11:39:15

标签: node.js mongodb web monk

我正在尝试创建一个基于node.js的网站,我将在mongodb中保存信息

我的APP.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' })
};

路由目录中的INDEX.JS文件在下面给出

db.usercollection.insert({ "username" : "testuser1", "email" : "testuser1@testdomain.com" })

我已经使用命令提示符

创建了用户集合
db.usercollection.find().pretty()

使用

查询
{
    "_id" : ObjectId("5202b481d2184d390cbf6eca"),
    "username" : "testuser1",
    "email" : "testuser1@testdomain.com"
}

已收到结果

500 TypeError: Cannot read property 'get' of undefined at exports.userlist (/var/www/html/node/nodetest1/routes/index.js:17:21)

但是当我尝试使用

查看此浏览器的输出时

http://localhost:3000/userlist

然后我得到以下错误

var db = req.db;
console.log(db);

当我这样做时

$("table").dataTable({}, $("table").databar());

然后在控制台上它显示未定义,在浏览器上也显示db'undefined'表示APP.JS中的 db对象在ROUTES / INDEX.JS中不可用

我是所有这些新手,所以需要你的帮助。

最好的问候

2 个答案:

答案 0 :(得分:0)

我设法删除错误。 以下是我更新的ROUTES / INDEX.JS文件

var mongo = require('mongodb'),  
  Server = mongo.Server,
  Db = mongo.Db;
var server = new Server('localhost', 27017, {  
  auto_reconnect: true
});

var db = new Db('nodetest1', server);  

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 uc = db.collection('usercollection');

    uc.find({},{},function(e,docs){
        res.render('userlist',{
            "userlist":docs
        });
    });

    //res.render('userlist', { title: 'Express: User List' })

};

我还评论了APP.JS中的以下几行

  //, mongo = require('mongodb')
  //, monk = require('monk');

  //var db = monk('localhost:27017/nodetest1');

答案 1 :(得分:-1)

如果您使用的是Express 4:

  

所有路由方法都将按其出现的顺序添加。   你不应该做app.use(app.router)。这消除了最常见的   快递问题。

来源https://github.com/strongloop/express/wiki/New-features-in-4.x

所以这可能是你问题的根源。