Как мой нод / экспресс RESTful API должен возвращать ошибки базы данных клиентам? - PullRequest
0 голосов
/ 09 ноября 2018

Прямо сейчас, если есть ошибка, такая как повторяющаяся запись, я возвращаю это как res.status(500).send(err);

Показывать клиенту такие вещи:

{
    "code": "ER_DUP_ENTRY",
    "errno": 1062,
    "sqlMessage": "Duplicate entry 'name@mail.com' for key 'user_table_email_unique'",
    "sqlState": "23000",
    "index": 0,
    "sql": "update `user_table` set `email` = 'name@mail.com' where `id` = 3"
}

Какой стандартный способ сделать это? Я хочу, чтобы клиент знал, что это за ошибка, а не, например, имя моей таблицы

1 Ответ

0 голосов
/ 09 ноября 2018

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

// This is pseudocode
const updateEmail = (db, email, id) => db.query('query...')
  .then(data => /* process things */)
  .catch(err => {
    if (err.errno === 1062) {
      throw new Error('Email already exists');
    }
  });

Я не уверен, что 500 - это правильный код для использования в данном конкретном случае, так как это не ошибка сервера как таковая. Это было бы предпочтением, хотя в зависимости от того, как структурированы другие ваши запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...