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

时间:2016-01-14 23:53:12

标签: node.js mongodb

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

  

ReferenceError:未定义db

这是我项目中的文件:

$mapFile = fopen('config/map.txt', 'r'); // don't need `or die()`
while ($line = fread($mapFile, filesize('config/map.txt')))
{
    echo $line;
}

和database.js

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);

的package.json:

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

1 个答案:

答案 0 :(得分: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);
});

});