Express.JS:req.params返回未定义的值

时间:2019-05-24 19:11:31

标签: javascript node.js regex reactjs express

我有带有路由的Express方法(Express&Node),其中包含url参数,以及对该URL的客户端请求(反应),但是问题是服务器返回的参数不确定。这是代码:

服务器(index.js):

router.use('/api/recipe/:dishName/:id', require('./view-recipe'))

view-recipe.js:

router.get('/', (req, res) => {
      const name = req.params.dishName;
      const id = req.params.id;
      console.log('name ' + name +'  id  ' + id)
})

和客户端(ReactJS):

componentDidMount(){
    const { match: { params } } = this.props;
    console.log(`/api/recipe/${params.dishName}/${params.id}`)
    axios.get(`/api/recipe/${params.dishName}/${params.id}`)
    .then(res => res.data)
    .then(data =>{
       console.log(data.recipe)
    })      
}

此代码返回未定义的名称:服务器端的名称和id,但是客户端sid变量(params.id和params.dishName)有效(我记录了该日志,并且有效)。顺便说一句,

  

未捕获(承诺)错误:请求失败,状态码为500

此错误显示在控制台中 有什么帮助吗?谢谢!

1 个答案:

答案 0 :(得分:-1)

您应该执行以下操作:

var viewRecipe=require('./view-recipe')
router.use('/api/recipe/:dishName/:id',viewRecipe.get )

以及在view-recipe.js中:

module.exports={
 get:function(req,res,next){
   const name = req.params.dishName;
      const id = req.params.id;
      console.log('name ' + name +'  id  ' + id)
     ...rest of code
    res.send('something')
  }
}

这背后的基本原理是,您需要将路由器映射两次才能使用一种方法。