从带有参数的路线获得404 - 表达4

时间:2014-03-30 01:27:17

标签: node.js express routes

我试图在一条路线中使用一个参数...在快递网站上尝试了4.x文档但没有用..我仍然得到404 ...似乎它没有达到我的功能..

创建和列出所有itens的其他路线都很好..

var db = require('../db');

var express = require('express');
var mongoose = require( 'mongoose' );
var Users = mongoose.model( 'Users' );
var app = express.Router();



//PARAM
app.param('name', function(req, res, next, name) {
    Users.find({name:name}, function(err, docs) {
        if (err) {
            return next(err);
        }
        else if (!name) {
            return next(new Error('failed to load user'));
        }

        req.user = docs[0];
        next(); 
    });
});

//SHOW
app.get('/users/:name', function(req,res){
    res.render('users/profile', {user: req.user});
});

尝试了一个简单的版本...相同的404 ...(顺便说一句,名字存在..它显示在列表项目上)

//SHOW
    app.get('/users/:name', function(req, res, name){
    var name = req.param('name');
    Users.find({name: name}, function(err, docs) {  
        req.user = docs[0];
        next(); 
    }); 
res.render('users/profile', {user: req.user});
});

1 个答案:

答案 0 :(得分:0)

这是因为你正在使用Express 4路由器,就像它是Express 3应用程序一样。路由器允许您设置相关路由的集合,就像您所做的那样。但是,您必须将路由器连接到较大的Express服务器。

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

// attach some things to router
// router.get('/users/:name', ...)

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

会安装router路径下/foo处理的所有路径,例如/foo/users/:name