ReferenceError:当我尝试从服务器获取数据时,db没有定义

我为我的学校开发一个新的项目,我尝试从我的数据库中获取一些数据,但是我在terminal上发现了这个错误:

ReferenceError:db没有定义

这里是我的项目中的文件:

server.js var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var morgan = require('morgan'); var mongoose = require('mongoose'); var passport = require('passport'); var config = require('./config/database'); // get db config file var User = require('./app/models/user'); // get the mongoose model var Products = require('./app/models/products'); //get the mongoose model var port = process.env.PORT || 8080; var jwt = require('jwt-simple'); // get our request parameters app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // log to console app.use(morgan('dev')); // Use the passport package in our application app.use(passport.initialize()); // demo Route (GET http://localhost:8080) app.get('/', function(req, res) { res.send('The API is at http://localhost:' + port + '/api'); }); // connect to database mongoose.connect(config.database); // pass passport for configuration require('./config/passport')(passport); // bundle our routes var apiRoutes = express.Router(); // create a new user account (POST http://localhost:8080/api/signup) apiRoutes.post('/signup', function(req, res) { if (!req.body.name || !req.body.password || !req.body.email) { res.json({success: false, msg: 'Please pass name and password and email.'}); } else { var newUser = new User({ name: req.body.name, password: req.body.password, email: req.body.email }); // save the user newUser.save(function(err) { if (err) { return res.json({success: false, msg: 'Username already exists.'}); } res.json({success: true, msg: 'Successful created new user.'}); }); } }); // route to authenticate a user (POST http://localhost:8080/api/authenticate) apiRoutes.post('/authenticate', function(req, res) { User.findOne({ name: req.body.name }, function(err, user) { if (err) throw err; if (!user) { res.send({success: false, msg: 'Authentication failed. User not found.'}); } else { // check if password matches user.comparePassword(req.body.password, function (err, isMatch) { if (isMatch && !err) { // if user is found and password is right create a token var token = jwt.encode(user, config.secret); // return the information including token as JSON res.json({success: true, token: 'JWT ' + token}); } else { res.send({success: false, msg: 'Authentication failed. Wrong password.'}); } }); } }); }); // create a new Product (POST http://localhost:8080/api/productsignup) apiRoutes.post('/productsignup', function(req, res) { if (!req.body.name || !req.body.serialnumber) { res.json({success: false, msg: 'Please pass name and serial number.'}); } else { var newProducts = new Products({ name: req.body.name, serialnumber: req.body.serialnumber }); // save the Product newProducts.save(function(err) { if (err) { return res.json({success: false, msg: 'Product already exists.'}); } res.json({success: true, msg: 'Successful created new Product.'}); }); } }); apiRoutes.get('/productinfo' , function(req, res, next) { db.products.find(); if (err) return next(err); res.json(post); }); // route to a restricted info (GET http://localhost:8080/api/memberinfo) apiRoutes.get('/memberinfo', passport.authenticate('jwt', { session: false}), function(req, res) { var token = getToken(req.headers); if (token) { var decoded = jwt.decode(token, config.secret); User.findOne({ name: decoded.name }, function(err, user) { if (err) throw err; if (!user) { return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'}); } else { res.json({success: true, msg: 'Welcome in the member area ' + user.name + '!'}); } }); } else { return res.status(403).send({success: false, msg: 'No token provided.'}); } }); getToken = function (headers) { if (headers && headers.authorization) { var parted = headers.authorization.split(' '); if (parted.length === 2) { return parted[1]; } else { return null; } } else { return null; } }; // connect the api routes under /api/* app.use('/api', apiRoutes); module.exports = apiRoutes; // Start the server app.listen(port); console.log('http://localhost:' + port); 

和database.js

 module.exports = { 'secret': 'di.ionio.gr', 'database': 'mongodb://localhost/firstapp' }; 

的package.json:

 { "name": "firstapp", "main": "server.js", "dependencies": { "bcrypt": "^0.8.5", "body-parser": "~1.9.2", "express": "~4.9.8", "jwt-simple": "^0.3.1", "mongoose": "~4.2.4", "mongodb" : "~1.2.5", "morgan": "~1.5.0", "passport": "^0.3.0", "passport-jwt": "^1.2.1" } } 

因为数据库没有定义,你不需要它只使用模型“产品”,只是改变这一点

 apiRoutes.get('/productinfo' , function(req, res, next) { db.products.find(); if (err) return next(err); res.json(post); }); 

对此

 apiRoutes.get('/productinfo' , function(req, res, next) { products.find( function (err, result) { if (err) return console.error(err); res.json(result); }); });