Node.js TypeError:无法调用方法';获取';未定义的
我尝试使用express.js在node.js上创建一个简单的CRUD应用程序。我试图连接到DB,但有一个错误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
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';谢谢你事实上,你可以。与每次请求都重新连接相比,最好为应用程序建立一个到数据库的持久连接。