如何在Express中获取URL参数?

时间:2015-11-03 15:27:19

标签: angularjs node.js express angular-ui-router

我在Express中获取URL参数时遇到问题。 在客户端(Angular)上,我定义了状态(ui.router)并使用新状态发送URL(id):

.state('home.detail', {
  url: '/:id',
  templateUrl: 'views/detail.html',
  controller: 'DetailController'
 });

在后端,我正在尝试获取此URL(id)

app.get('/api/:id', function(req,res){
    var id = req.query.id;
    console.log(id);

    var queryString = "SELECT * FROM `table` WHERE table.ID=id";
    //add to a callback
    connection.query(queryString, function (error, results) {
        if(error) {
            throw error;
        }
        else { 
            // send JSON object to the client
            res.end(JSON.stringify(results));
            //console.log(res);
        }
    });
});

但我获得了undefined id值(console.log(id))。 我做错了什么?

2 个答案:

答案 0 :(得分:2)

你应该改用:

var id = req.params.id;
  • req.params包含路由参数(在路径部分中) 网址)
  • req.query包含网址查询参数(在?之后) URL)。

答案 1 :(得分:1)

:id被放入请求中的params对象。所以,你需要做的就是:

var id = req.params.id;

此外,当您构建queryString时,您需要传递id的值而不是名为" id"的字符串。你必须做这样的事情:

var queryString = "SELECT * FROM `table` WHERE table.ID=" + id;