繁体   English   中英

如何使用expressjs将数据从一个路由传递到另一个nodejs

[英]How to pass data from one route to another nodejs with expressjs

我想向请求对象添加某个属性,并在重定向后从另一个路由访问添加的它。 以下代码显示了我真正需要的东西。

const express = require('express')
const app = express()

app.get('/test1',(req,res)=>{
console.log('test1')
req.name = 'lahiru'
res.redirect('/test2')
})

app.get('/test2',(req,res)=>{
console.log('test2')
let val = req.name
console.log(val)
})

app.listen(3000)

但是当我向“/test1”发送请求时,我得到以下输出。

test1
test2
undefined

我用 express-session 试过这个,但日志返回相同的“未定义”。 任何人都可以请帮忙。 提前致谢。

您可以使用第一个路由作为中间件来修改 req 参数。

const express = require("express");
const app = express();

const middleware = (req, res, next) => {
  console.log("test1");
  req.name = "lahiru";
  next();
};

app.get("/test2", middleware, (req, res) => {
   console.log("test2");
   let val = req.name;
   console.log(val);
});

app.listen(3000);

如果您希望name/test2可用,您可以执行以下操作之一:

  • 使用查询字符串在 URL 中传递数据: /test2?name={name}
  • 将路由更改为: /test2/:name
  • 使用cookies
  • 其他类型的会话
app.get('/test1',(req,res)=>{
    const name = 'lahiru'
    res.redirect(`/test2/${name}`)
    // res.redirect(`/test2/?name=${name}`)
})

// using req.params
app.get('/test2/:name',(req,res)=>{
    let val = req.params.name
    console.log(val)
})
// using query string
app.get('/test2',(req,res)=>{
    let val = req.query.name
    console.log(val)
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM