完整的routes/users.js:
var express = require('express');
var router = express.Router();
var myMongoose = _require('myMongoose');
var User = myMongoose.getModel('user');
var getUsers = function (callback) {
User.find(function (err, users) {
if (err) {
throw err;
}
callback && callback(users);
});
};
var addUser = function (user, callback) {
var data = new User(user);
data.save(function (err) {
if (err) {
throw err;
}
callback && callback();
});
};
/* GET users listing. */
router.get('/', function (req, res) {
getUsers(function (users) {
res.render('users', { title: 'users', users: users });
});
});
router.get('/add', function (req, res) {
res.render('users_add', { title: 'addUser' });
});
router.post('/add', function (req, res) {
if (!req.body.name) {
res.send('name is required');
return;
}
if (!req.body.password) {
res.send('password is required');
return;
}
if (!req.body.sex) {
res.send('sex is required');
return;
}
addUser(req.body, function () {
res.redirect('..');
});
});
module.exports = router;
我的当前目录是/users/add,处理一个post请求,添加完成后我希望返回到/users目录,显示所有的用户,但是跳回首页去了
补充下,我其实说的就是url,不是目录,我post的页面是http://localhost:3000/users/add 提交后,我希望能跳转回http://localhost:3000/users
不知道是不是我哪里写的有问题,感觉这里的路径都是相对users/的,也就是app.js里定义的
var users = require('./routes/users');
app.use('/users', users);
我把重定向写成这面的形式,可以达到我返回上一级路径的目的,不过总觉得有点拙
res.redirect('add/..');
15 回复
@ravenwang post时候的路径不是相对/users的么,也就是说实际应该是http://localhost:3000/users/add
你的意思是我实际是提交到http://localhost:3000/add 去了?