如何使用ExpressJS将数据从一条路由传递到另一节点

时间:2019-12-10 16:19:45

标签: javascript node.js express session request

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

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中尝试过此操作,但log-返回相同的“ undefined”。 谁能帮忙。 提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您想在name中使用/test2,请执行以下操作之一:

  • 使用查询字符串/test2?name={name}
  • 在URL中传递数据
  • 将路线更改为:/test2/:name
  • 使用Cookie
  • 其他类型的会话
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)
})

答案 1 :(得分:0)

您可以将第一个路径用作中间件来修改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);