Почему backend неправильно обрабатывает удаление?



@nekrasov444

Доброго времени суток, есть сервер Node express Mongoose, при удалении он выдает успешный результат хотя такая запить не была найдена или данные введены не правильно и сама запись не удалилась
router.delete('/delete/:ln/:pc', async (req, res) => {
  try {
    await tempJob.deleteOne({
      link_name: req.params.ln,
      protection_code: req.params.pc,
    });

    res.status(201).json({ message: 'Успешно удаленно ' });
  } catch (error) {
    return res.status(500).json({ message: `Error: ${error}` });
  }
});

Как мне его заставить находить, сравнивать protection_code и только потом удалять, так как сейчас независимо от того что ввел ‘Успешно удаленно ‘ и только при правильно ведены данных он удаляет


Решения вопроса 2



@yarkov

Как мне его заставить находить, сравнивать protection_code и только потом удалять

Так и написать, в такой же последовательности.
Сначала ищете, если не находите, то кидаете ошибку.
Если находите, то удаляете.
А вам зачем если не секрет?
При удалении хорошим тоном считается отдавать ошибку если что-то пошло не так. У вас всё в порядке. Не нашлась запись — значит не удалена. Нашлась — значит удалена.
Будет ошибка при работе с БД — будет и ошибка в респонсе.



1

комментарий


Ответы на вопрос 1



@SagePtr

В документации нигде не сказано, что deleteOne обязано выбрасывать исключение, если запись не найдена. А следовательно, проверять таким способом факт удаления записи не имеет никакого смысла.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *