2016-04-28 6 views
0

Ich habe den folgenden Code in meinem Express App:Express: router.route sendet keine Anfrage, sondern läuft weiter

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:[email protected]<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); 

Hier mein Model Code ist:

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

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

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

Wenn ich entweder POSTMAN Einsatz oder browser läuft die Anfrage weiter und stoppt oder gibt nichts zurück. Ich denke, der Rückruf sollte beendet werden, weiß aber nicht wie.

Ich treffe http://localhost:8080/api/bears und es bleibt erfrischend und die Anfrage endet nie.

Ausgabe vom Server, wenn ich getroffen/api/trägt & Anfrage noch nicht zu Ende:

Something is happening. 

Ausgabe vom Server, wenn ich getroffen/api

Something is happening. 

und auf Browser Ich sehe,

+0

Welche Anfragen senden Sie? Siehst du irgendwelche Fehler in der Konsole? – alexmac

+0

@AlexanderMac http: // localhost: 8080/api/Bären und keine Konsolenfehler und es wird nicht gedruckt "Ich bin in GET' – fscore

+0

Verwenden Sie zusätzliche Middleware' app.use ('/ api', you_router) '? – alexmac

Antwort

0

Das Problem war mit der mongooose Version in meinem Paket.json. Ich wechselte auf die neueste Version 4.1.11 und tat eine npm install. Das ist ein Fehler: https://github.com/meanjs/mean/issues/1010

ich den folgenden Code hinzugefügt, um sicherzustellen, war ich keinen Fehler bekommen und einen Erfolg:

mongoose.connect('mongodb://db-name:[email protected]:port/db', function(err) { 
    if(err) { 
    console.log(err); 
    } else { 
    console.log('success'); 
    } 
}); 

ich diese erhalten:

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

habe ich dann RoboMongo zu verbinden und es war alles in Ordnung, also fing ich an, die Bugs zu betrachten. RoboMongo verwendet SCRAM-SHA-1 als Authentifizierungsmechanismus. Ich fing an, nach Auth als Option in meiner URL zu suchen, wo ich auf den obigen Fehlerbericht stieß.