我试图在一条路线中使用一个参数...在快递网站上尝试了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});
});
答案 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
。