У меня проблема с параметром URL в Express. На клиенте (Угловое) я определяю состояние (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)). Что я делаю неправильно?
Вы должны использовать это вместо этого:
var id = req.params.id;
req.params
содержит параметры маршрута (в части пути URL)req.query
содержит параметры запроса URL (после URL-адреса). Идентификатор :id
помещается в объект params в запросе. Итак, все, что вам нужно сделать, это сделать:
var id = req.params.id;
Кроме того, когда вы создаете свой queryString
вам нужно передать ему значение id вместо строки с именем "id". Вам нужно было бы сделать что-то вроде этого:
var queryString = "SELECT * FROM 'table' WHERE table.ID=" + id;
req.params.id
и я изменил запрос на var queryString = "SELECT * FROM table WHERE table.ID=" + id;
и я получаю сообщение об ошибке: ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ': id' в строке 1. Нужно ли использовать какой-то анализатор URL? Спасибо