无法获得mongodb和nodejs

时间:2016-01-16 11:02:51

标签: node.js mongodb

你好,我试图从我的数据库中获取他的名字,但是当我执行脚本时,localhost关闭,我必须重新启动。我也得到错误:

  

ReferenceError:未定义文本

这是server.js

    var express     = require('express');
    MongoClient = require('mongodb').MongoClient,
    app = express(),
    mongoUrl = 'mongodb://localhost:27017/firstapp';
var bodyParser  = require('body-parser');
var morgan      = require('morgan');
var mongoose    = require('mongoose');
var passport    = require('passport');
var redisClient = require('redis').createClient;
var redis       = redisClient(6379, 'localhost');
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 Makeissue   = require('./app/models/makeissue'); //get the mongoose model
var port        = process.env.PORT || 8080;
var jwt         = require('jwt-simple');
var access      = require('./config/database.js'); 
MongoClient.connect(mongoUrl, function(err, db) {
    if (err) throw 'Error connecting to database - ' + err;
        // 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.'});
        }
      });
    }
  });
});

apiRoutes.post('/book', function (req, res) {
        if (!req.body.title || !req.body.author) res.status(400).send("Please send a title and an author for the book");
        else if (!req.body.text) res.status(400).send("Please send some text for the book");
        else {
            access.saveBook(db, req.body.title, req.body.author, req.body.text, function (err) {
                if (err) res.status(500).send("Server error");
                else res.status(201).send("Saved");
            });
        }
    });
 apiRoutes.get('/book/:title', function (req, res) {
        if (!req.param('title')) res.status(400).send("Please send a proper title");
        else {
            access.findBookByTitle(db, req.param('title'), function (book) {
                if (!text) res.status(500).send("Server error");
                else res.status(200).send(book);
            });
        }
    });



// create a new Product (POST http://localhost:8080/api/productsignup)
apiRoutes.post('/resources/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.post('/resources/createpost', function(req, res) {
  if (!req.body.issue) {
    res.json({success: false, msg: 'Please pass a issue.'});
    } else {
    var newMakeissue = new Makeissue({
      issue: req.body.issue    
    });
    // save the Product
    newMakeissue.save(function(err) {
      if (err) {
        return res.json({success: false, msg: 'Post already exists.'});
      }
      res.json({success: true, msg: 'Successful created new post.'});
    });
  }
});



//display a specific product stored in database
apiRoutes.get('/resources/productinfo/:name' , function(req, res) {
  if (!req.param('name')) res.status(400).send("Please send a proper name");
  else{
      Products.find(Products, req.param('name'), function(Products) {
        if (!text) res.status(500).send("server error");
      });
    }
  });

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





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




    app.listen(8080, function() {
        console.log('listening on port 8080');
    });
});

和database.js

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

    module.exports.saveBook = function (db, title, author, text, callback) {
        db.collection('text').save({
            title: title,
            author: author,
            text: text
        }, callback);
    };

    module.exports.findBookByTitle = function (db, title, callback) {
        db.collection('text').findOne({
            title: title
        }, function (err, doc) {
            if (err || !doc) callback(null);
            else callback(doc.text);
        });
    };

我做错了什么?

1 个答案:

答案 0 :(得分:1)

不确定代码是否存在其他问题。但是如果错误ReferenceError: text is not defined,编译器可能会抱怨他们无法确定在以下行中声明text的位置吗?

apiRoutes.get('/book/:title', function (req, res) {
...
  if (!text) res.status(500).send("Server error");
...

apiRoutes.get('/resources/productinfo/:name' , function(req, res) {
...
  if (!text) res.status(500).send("server error");
...

如果是错误,您可能需要将text替换为req.body.text