Как получить параметр URL в Express?

0

У меня проблема с параметром 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)). Что я делаю неправильно?

  • 0
    Пожалуйста, дайте мне знать, если мой ответ решил вашу проблему :)
Теги:
express
angular-ui-router

2 ответа

2

Вы должны использовать это вместо этого:

var id = req.params.id;
  • req.params содержит параметры маршрута (в части пути URL)
  • req.query содержит параметры запроса URL (после URL-адреса).
1

Идентификатор :id помещается в объект params в запросе. Итак, все, что вам нужно сделать, это сделать:

var id = req.params.id;

Кроме того, когда вы создаете свой queryString вам нужно передать ему значение id вместо строки с именем "id". Вам нужно было бы сделать что-то вроде этого:

var queryString = "SELECT * FROM 'table' WHERE table.ID=" + id;
  • 0
    Я попытался с req.params.id и я изменил запрос на var queryString = "SELECT * FROM table WHERE table.ID=" + id; и я получаю сообщение об ошибке: ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ': id' в строке 1. Нужно ли использовать какой-то анализатор URL? Спасибо
  • 1
    Если это ошибка MySQL, то вам просто нужно переформатировать строку запроса, как того хочет версия MySQL. Анализатор запросов в контексте expressJS используется для анализа параметров нашего запроса в URL. Таким образом, если пользователь сделал вызов 'example.com?id=5&name=hello', анализатор запросов проанализирует для вас 'id' и 'name' в объекте req.query (просто для примера).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню