Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 23.11.2020
Сообщений: 12

get по id

18.01.2021, 19:27. Показов 2212. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Мне нужно реализовать get запрос по id. Сам вывод работает, но мне нужно добавить проверку по id, если выбранного id не существует то должна вывестись ошибка 404, если id существует, то собственно выводятся данные. Не могу понять как правильно сделать проверку на существующие id. Буду благодарен за помощь.

JavaScript
1
2
3
4
5
6
7
8
9
exports.itemsId = (req, res) => {
    db.query('SELECT * FROM `items` WHERE id = ?',[req.params.id],(error, rows, fields) => {
        if(error) {
            response.status(404, {message: `Такого id не существует`}, res)
        } else {
            response.status(200, rows, res)
        }
    })
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2021, 19:27
Ответы с готовыми решениями:

Как правильно должен работать скрипт с использованием get.Seconds и get.Months одновременно?
Подскажите, пожалуйста, как правильно должен работать скрипт с использованием get.Seconds и...

Метод get не срабатывет (Cannot GET /api/auth/generate)
Работаю с с js не так давно. Нужно сделать 3rd party service - запрос на сторонний сервис. Он...

Реализуйте классы Magician и Daemon с get/set stoned. При этом get/set attack должен учитывать логику
Здравствуйте! Подскажите, пожалуйста, как можно скорректировать решение Есть задача: Мое...

7
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
18.01.2021, 20:17
Лучший ответ Сообщение было отмечено student_js29 как решение

Решение

student_js29, error будет определен если произошла ошибка при выполнении запроса (неверный синтаксис или база данных поламалась к примеру), не будет корректно отправлять 404 если есть error.

Если rows - будет пустым массивом, то да, это значит что такого item не было найдено, тогда можете возвращать 404. итого, лучше так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
if (error) {
  response.status(500, {message: 'Произошла ошибка при выполеннии запроса в БД'}, res);
  console.error(error);
 return;
}
 
if (!rows || !rows.length) {
response.status(404, {message: 'Предмет не найден'}, res);
 return;
}
 
response.status(200, rows, res)
1
0 / 0 / 0
Регистрация: 23.11.2020
Сообщений: 12
18.01.2021, 20:40  [ТС]
Спасибо большое. Подскажите пожалуйста, получается данная проверка подходит и для выполнения delete запроса по id?
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
18.01.2021, 21:06
student_js29, не могу точно сказать, поскольку не понятно что именно у вас за драйвер и какая БД, скорее всего mysql.

С запросом на delete считайте что если не произошло ошибки (error == undefined или null), то он был выполнен успешно, обычно так.
0
0 / 0 / 0
Регистрация: 23.11.2020
Сообщений: 12
18.01.2021, 21:12  [ТС]
Я практикуюсь с mysql, подставил вашу проверку. Удаления по нужному id происходят, но всегда выводится статус 404 в независимости от того существует id или нет

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
exports.deleteId = (req, res) => {
    db.query('DELETE FROM `items` WHERE `items`.`id` = ?',[req.params.id],(error, rows, fields) => {
        if (error) {
            response.status(500, {message: 'Произошла ошибка при выполеннии запроса в БД'}, res);
            console.error(error);
           return;
          }
           
          if (!rows || !rows.length) {
          response.status(404, {message: 'Предмет не найден'}, res);
           return;
          } else {
          response.status(200, rows, res)
        }
    })
}
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
18.01.2021, 21:48
student_js29, delete удаляет запись из БД. Как в таком случае может быть предмет не найден? Вы имеете ввиду что показать ошибку Предмет не найден когда нельзя найти тот предмет, который нужно удалить?
0
0 / 0 / 0
Регистрация: 23.11.2020
Сообщений: 12
18.01.2021, 21:53  [ТС]
Да вы правы. К примеру у меня в БД есть только одна запись которая имеет id 1. Допустим я попытаюсь удалить запись с id 2 и мне показывает ошибку "Предмет не найден", вроде бы все верно. Но если я попытаюсь удалить запись с id 1, которая существует в БД, у меня также покажет ошибку "Предмет не найден" но удаление будет произведено. Таким образом выходит, что для любого id существующго или не существующего выводится ошибка "Предмет не найден"
0
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
18.01.2021, 23:21
Лучший ответ Сообщение было отмечено student_js29 как решение

Решение

student_js29, в таком случае вторым параметром в коллбеке будет не массив строк, а объект, например data, в котором вы можете прочитать количество строк которые были удалены. Соотвественно, если оно равно 0 - объект не был найден.

JavaScript
1
2
3
4
5
6
7
8
9
(error, data) => {
  const was_deleted = data.affectedRows >= 1;
 
  if (was_deleted) {
   //200 OK
  } else {
     //404 Not Found
  }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2021, 23:21
Помогаю со студенческими работами здесь

JQuery .get Проверка ответа
Привет всем. В коде не срабатывает if(data=='success') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...

Непонятки с GET
Добрый день! Есть кусок кода <script> var xmlhttp = new XMLHttpRequest();...

Длина get переменной, ajax запрос
Собственно вопроса два, имеется форма регистрации, задача проварить с помощью аякса логин и почту...

Не работает функция $.get
<html><head><title>ololo</title> <script type="text/javascript"...

Можно ли с помощью JS считать get-строку?
Подскажите как это можно сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru