【发布时间】:2016-06-23 14:13:18
【问题描述】:
Web 应用程序路由新手在这里。我有一个基于 Node/Express 的相对简单的应用程序。
应用程序的主要索引是用户名和 ID 列表。
localhost:242
每个用户 ID 都是指向页面的链接,其中包含用于输入有关该特定用户的其他元数据的表单。
localhost:242/user/1398
一切正常。当我输入一些关于用户的元数据并提交表单时,会执行一个 POST 路由,然后我被重定向回原来的页面。我希望能够重新呈现同一页面,而不是使用重定向,这样我可以传递一些确认消息,指示刚刚更改的内容。
这是我的代码的简化版本。
// Module imports
var express = require('express');
var validator = require('express-validator');
var router = express.Router();
router.get('/', function(req, res, next) {
db.dataTalk(queryUsers, null, config.connection, function(err, result) {
var listUsers = result;
res.render('index', {
// Index with list of users
title: 'Page Title',
listUsers: listUsers
});
});
});
// GET /user/:id
router.get('/user/:id', function(req, res, next) {
db.dataTalk(queryUserDeets, [req.params.id], config.connection, function(err, result) {
// Details for a single user
var userDetails = result;
res.render('user', {
title: req.params.id,
userDetails: userDetails
});
});
});
// POST /user-update
router.post('/user-update', function(req, res) {
// Here goes a lot of logic to validate the form contents, and update the appropriate databases
// Redirect back to the user page, which should display the updated metadata
res.redirect('/user/' + req.body.userInitID);
});
module.exports = router;
【问题讨论】:
-
您是否有理由不将重定向替换为
res.render()?