在 Express.js 中的路由之间传递数据

时间:2021-03-01 15:48:53

标签: express routes

考虑构建用于从公共 API 获取数据的小型 MERN 堆栈


在客户端,我有一个表单,其中有两个输入,用于输入搜索条件
我正在使用 axios 将输入数据发送到服务器端

const newData = {
  input1: entering.input1,
  input2: entering.input2
};
axios.post('http://localhost:5000/search', newData);
setEntering({
  input1: '',
  input2: ''
});


在服务器端,我使用POST方法在路由中获取输入数据
我可以用查询字符串

生成url
router.route("/search").post(bodyParser.urlencoded({extended: false}), (req, res) => {
  console.log(req.body); // { input1: 'qwerty', input2: '123456' }
  let input1_data = req.body.input1;
  let input2_data = req.body.input2;
  let qs = `https://public.api/endpoint/search?letters=${input1_data}&digits=${input2_data}`;
  console.log(qs); // https://public.api/endpoint/search?letters=qwerty&digits=123456
});


我的烦恼就从这里开始

我想获取search?letters=qwerty&digits=123456端点
使用 GET 方法,如下所示:

router.route("/search").get((req, res) => {
  axios({
    method: 'GET',
    url: qs
  }).then((i) => {
    res.json(i.data);
  }).catch((err) => {
    console.error(err)
  });
});


我不知道如何使 'qs' 变量在 GET 路由中可用
我试图在 POST 路由中嵌套 GET 路由,如下所示:

router.route("/search").post(bodyParser.urlencoded({extended: false}), (req, res) => {
  let input1_data = req.body.input1;
  let input2_data = req.body.input2;
  let qs = `https://public.api/endpoint/search?letters=${input1_data}&digits=${input2_data}`;
  router.route("/search").get((req, res) => {
    axios({
      method: 'GET',
      url: qs
    }).then((i) => {
      res.json(i.data);
    }).catch((err) => {
      console.error(err)
    });
  });
});

但它只能工作一次,如果我再次进入输入并输入新数据,
我从 localhost:5000/search 获取旧数据,即使 'qs' 变量有新值

有没有办法在 POST 路由中访问 qs 变量?

0 个答案:

没有答案
相关问题