要在表单提交后的res.redirect中显示旧信息,可以使用会话(session)来保存用户输入的数据。下面是一个示例代码,演示了如何实现这个功能:
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true,
}));
app.get('/', (req, res) => {
const oldFormData = req.session.formData || {};
res.render('form', { oldFormData });
});
app.post('/submit', (req, res) => {
const { name, email } = req.body;
// 保存用户输入的数据到会话
req.session.formData = { name, email };
// 重定向到首页
res.redirect('/');
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在这个示例中,我们使用了express-session中间件来创建会话,并使用body-parser中间件来解析表单数据。
首先,当用户访问首页时,我们从会话中获取之前保存的formData,并将其传递给模板进行渲染。这样,如果用户之前已经提交过表单,那么表单中的输入框将会被填充上之前的值。
然后,当用户提交表单时,我们从req.body中获取表单数据,并将其保存到会话中的formData中。这样,下次用户访问首页时,之前提交的数据将会被显示出来。
最后,通过res.redirect('/')将用户重定向到首页。
请注意,示例中使用了模板引擎来渲染表单页面,你可以根据自己的需求选择使用适合的模板引擎。