Express:router.route不发送请求但继续运行

时间:2016-04-28 18:16:56

标签: javascript node.js express

我的Express应用中有以下代码:

var express    = require('express');        // call express
var app        = express();                 // define our app using express
var bodyParser = require('body-parser');
var mongoose   = require('mongoose');
 // connect to our database
mongoose.connect('mongodb://username:pwd@<url>/db-name');

var Bear = require('./app/models/bear');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var port = process.env.PORT || 8080;        // set our port

var router = express.Router();   

//middleware to use for all requests
router.use(function(req, res, next) {
    // do logging
    console.log('Something is happening.');
    next(); // make sure we go to the next routes and don't stop here
});

router.route('/bears')

  .get(function(req, res) {
    Bear.find(function(err, bears) {
        if(err)
            res.send(err);
        console.log('I am in GET');
        res.json(bears);
    });
  })
  .post(function(req, res) {
    var bear = new Bear();
    bear.name = req.body.name;
    console.log('body param:'+ bear.name);
    bear.save(function(err) {
        if(err)
            res.send(err);

        res.json({ message: 'Bear created!'});
    });
  });

router.get('/', function(req, res) {
    res.json({ message: 'hooray! welcome to our api!' });
});

app.use('/api', router);


app.listen(port);

这是我的Model代码:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var BearSchema = new Schema({
    name: String
});

module.exports = mongoose.model('Bear', BearSchema);

当我使用POSTMAN或浏览器时,请求会继续,并且不会停止或返回任何内容。我认为回调应该结束但不知道如何。

我正在点击http://localhost:8080/api/bears并且它会不断刷新,请求永远不会结束。

当我点击/ api / bears&amp;请求没有结束:

Something is happening.

我点击/ api

时从服务器输出
Something is happening.

在我看到的浏览器上,

Cannot GET /api

1 个答案:

答案 0 :(得分:0)

问题在于我的package.json中的mongooose版本。我更改为最新版本4.1.11并执行了npm install。这是一个错误:https://github.com/meanjs/mean/issues/1010

我添加了以下代码,以确保我没有收到错误并取得成功:

mongoose.connect('mongodb://db-name:pwd@mongourl:port/db', function(err) {
   if(err) {
     console.log(err);
   } else {
     console.log('success');
   }
 });

我收到了这个:

{ [MongoError: auth failed] name: 'MongoError', ok: 0, errmsg: 'auth failed', code: 18 }

然后我使用RoboMongo进行连接,一切都很好,所以我开始查看错误。 RoboMongo使用SCRAM-SHA-1作为身份验证机制。我开始在我的URL中指定auth作为选项,我遇到了上面的错误报告。