2016-04-30 6 views
1

Also im Grunde will ich meinen Code in der Lage sein mywebsite.com/username gehen und sie zu ihrem Profil nehmen.Wie kann ich immer noch einen Router in Node Express verwenden und immer noch einen Platzhalter und Parameter?

Mein app.js hat -

var user = require('./routes/user'); 
app.use('/*', user); 

und dann in meinem user.js ich

router.get('/:username', function(req, res) { 
    console.log('the user name', req.params.username); 
}) 

haben, wenn ich meine router.get nur router.get ('/') ändern console.log loggt sich undefined aus und wenn ich es als router.get ('/: benutzername') belasse, bekomme ich einen 404 .. Ich habe auch versucht, app.use ('/: username', user) zu benutzen, aber das war immer noch nicht arbeite nicht.

+1

Wenn Sie wie folgt zugreifen möchten: mywebsite.com/username, dann verwenden Sie einfach app.use ('/', Router); Keine Notwendigkeit, '/ *' zu verwenden –

+0

Was er sagte, auch gut zu beachten, muss nicht einmal das '/' enthalten :) – kevingilbert100

+0

Aber ich mache App.use ('/', Index), da das mein Zuhause wäre Seite und keine Benutzer-Seite .. – joe

Antwort

0

Sie should't benötigen einen Platzhalter haben, wie Sie auf tun app.use

dies so etwas wie versuchen.

Siehe auch die Express-Router-Dokumentation http://expressjs.com/en/guide/routing.html

// Required Moduiles 
var express = require('express'); 
var router = express.Router(); 
var app = express(); 


// Add route to get 
router.get('/:username', function(req, res) { 
    res.status(200).send(req.params.username) 
}) 

// Add username 
app.use('/', router) 


// Start express server 
app.listen(3030); 

Update -

Nur app.use(router) mit würde das gleiche tun, wenn alle Routen in dieser neuen Router-Instanz/Middleware enthalten werden werden Sie Erstellen in einer separaten Datei.

+0

Der obige Code funktioniert nicht. Es gibt req.params.username als nicht definiert zurück – joe

Verwandte Themen