通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名。
exports.successfull = (req,res) => {
var userName = JSON.parse(req.body).username
res.redirect("/?username="+ userName);
}
因此,客户端的预期网址将为https://www.example.com/?username=“ John%20%Doe”
另一种方法是
res.send({
url: "/",
data: {
username: userName
}
})
res.send不重定向,而是发送字符串,这意味着在客户端它将给出“ /”。
但是在url上不会有任何字符串参数。
因此,如果没有字符串参数并且使用重定向,如何实现以上目标。如果我使用res.send,它将发送字符串,如果我使用res.redirect,则需要附加参数。
我只想重定向并传递数据,而不在url参数上显示用户名
我需要使用会话,cookie或其他任何东西吗?
答案 0 :(得分:0)
您可能不得不以不同的方式来考虑。您可以在您的快速app
实例上调用一个setter,它将在app
上设置一个变量,然后可以在以后进行检索,但这将使您的Web服务器保持状态。如果您不知道自己在做什么,那么有状态的Web服务器可能会出现很多错误。
您可以改为在相同的POST请求中接收数据并渲染模板。
app.post('/getdata', function(req, res){
res.render('/examplePage.SOMETEMPLATEENGINE', {
data: req.body.username
});
});
或者更好的是,您可以使用快速会话或cookie。可以使用express-session中间件来设置Express会话,并且可以像这样进行设置。
const session = require('express-session');
app.use(session({
name: "my-session-name",
secret: 'my-secret',
resave: false,
saveUninitialized: true,
store: // your prefered data store,
cookie: {
maxAge: oneDay
}
}));
这将需要使用data store
,因为会话将所有最终用户信息存储在数据库中。如果您是初学者,那么如果您想要一种更简单的方法,则可以使用cookie-parser在cookie中实现数据。我建议您阅读文档。 (不要担心它并不像看起来那样难)
设置了cookie-parser中间件后,cookie实施可能看起来像这样。
app.post('/setdata', (req, res, next) => {
// we will set a cookie here
res.cookie('mycookie', {username: req.body.username})
// this will set a cookie on the clients browser with whatever value you wan't
})
现在,在每个请求上,客户端都会自动将此Cookie发送到每个路由, 我们可以这样访问它。
// future route the user visits
app.get('/showcookie', (req, res, next) => {
// we can access the cookie we set if the user has visited the previous route like
//this
let username = req.cookies.mycookie.username
// and you can do with it what you wan't afterward
})
如果您想要一个超级简单的快递应用程序,向您显示cookie的工作示例,请访问我写给GitHub repo的链接,以向我的一些朋友展示cookie在快递中的工作方式。我希望这有帮助。在进行其他操作之前,最好总是先了解您正在使用的内容,尤其是在处理用户数据时。干杯。