Node.js 重定向到根url,在节点js的响应中传递一些数据

Node.js 重定向到根url,在节点js的响应中传递一些数据,node.js,express,Node.js,Express,通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名 exports.successfull = (req,res) => { var userName = JSON.parse(req.body).username res.redirect("/?username="+ userName); } 因此,客户端上的预期url将是“John%20%Doe” 另一种方法是 res.send({ url: "/

通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名

 exports.successfull = (req,res) => {
      var userName = JSON.parse(req.body).username
      res.redirect("/?username="+ userName);
    }
因此,客户端上的预期url将是“John%20%Doe”

另一种方法是

res.send({
  url: "/",
  data: {
   username: userName
  }
})
res.send不会重定向,它将发送字符串,这意味着在客户端它将给出“/”

但是在url上不会有任何字符串参数

因此,如果没有字符串参数和使用重定向,我如何实现上述目标。如果我使用res.send,它将发送字符串,如果我使用res.redirect,我们需要附加参数

我只想重定向并传递数据,而不在url参数上显示用户名


我需要使用会话、cookie或类似的东西吗?

您可能需要以不同的方式来考虑这个问题。您可以在express
应用程序
实例上调用setter,这将在
应用程序
上设置一个变量,您可以稍后检索,但这将使您的web服务器有状态。如果您不知道自己在做什么,有状态的web服务器可能会有很多问题

您可以在同一POST请求中接收数据并呈现模板

app.post('/getdata', function(req, res){
  res.render('/examplePage.SOMETEMPLATEENGINE', {
    data: req.body.username
  });
});
或者更好的是,您可以使用快速会话或cookie。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
    }
}));
这需要使用
数据存储
,因为会话将所有最终用户信息存储在数据库中。如果您想要一个更简单的方法,我认为您是一个初学者,那么您可以使用在cookie中实现数据。我建议你仔细阅读这些文件。(别担心,这并不像看上去那么难)

一旦您设置了中间件,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
})

如果你想要一个超级简单的express应用程序,向你展示一个cookie的工作示例,这里有一个指向我写的一个链接,向我的一些朋友展示cookie在express中是如何工作的。我希望这有帮助。在开始其他工作之前,最好先了解您正在使用的内容,尤其是在处理用户数据时。干杯。

是的,这就是课程的目的。谢谢@robertklep@robertklep如何正确使用此处的会话,这需要一个关于如何向Express添加会话支持的教程,这超出了StackOverflow的范围。