我在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))。
我做错了什么?
答案 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;