title: ReferenceError: db is not defined when i try to GET data from server
body: <p>i develop a new project for my school and i try to fetch some data from my database but i ecounter that error in my terminal: </p>
  
  <blockquote>
    <p>ReferenceError: db is not defined</p>
  </blockquote>
  
  <p>here are my files from my project:</p>
  
  <pre><code>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 &amp;&amp; !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 &amp;&amp; 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);
  </code></pre>
  
  <p>and database.js</p>
  
  <pre><code>module.exports = {
    'secret': 'di.ionio.gr',
    'database': 'mongodb://localhost/firstapp'
  };
  </code></pre>
  
  <p>package.json:</p>
  
  <pre><code>{
    "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"
    }
  }
  </code></pre>