Node.js TypeError:无法调用方法';获取';未定义的

Node.js TypeError:无法调用方法';获取';未定义的,node.js,mongodb,express,Node.js,Mongodb,Express,我尝试使用express.js在node.js上创建一个简单的CRUD应用程序。我试图连接到DB,但有一个错误TypeError:无法调用undefined的方法'get'。我的部分代码: app.js var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/notepad'); var app = express(); app.get('/users', route

我尝试使用express.js在node.js上创建一个简单的CRUD应用程序。我试图连接到DB,但有一个错误
TypeError:无法调用undefined的方法'get'。我的部分代码:

app.js

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/notepad');

var app = express();

app.get('/users', routes.userlist);

// mongoDB
app.use(function (req, res, next) {
   req.db = db; // this is setting up db property to request
   next();
});
routes/index.js

exports.userlist = function (req, res) {
var db = req.db;
var collection = db.get('usercollection'); // error in this line
collection.find({}, {}, function (e, docs) {
    res.render('userList', {
        "userlist": docs
    });
});
};

我认为DB的实例没有设置,或者在其他文件中不可用。如何解决这个问题?

你的
应用程序。使用
应该在你的
应用程序之前编写。获取
。Express首先调用
app.get

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/notepad');

var app = express();

// mongoDB
// Do all your "pre-route" use() functions first
app.use(function (req, res, next) {
   req.locals.db = db; // this is setting up db property to request
   next();
});

app.get('/users', routes.userlist);
在你的路线上

var db = req.locals.db; // Instead of req.db
或者更好

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/notepad');

var app = express();

app.locals.db = db;

app.get('/users', routes.userlist); // Access it using req.locals.db

var express=require('express')我猜。@limelights,是的,这行是存在的,我知道发生了什么。您不能将数据库附加到这样的请求。您需要在所有文件中重新要求它,并与它建立连接。@limelights,是的。你是对的。我删除了这个:var db=req.db;var db=monk('localhost:27017/notepad')中的'var';谢谢你事实上,你可以。与每次请求都重新连接相比,最好为应用程序建立一个到数据库的持久连接。