Всем привет. Под рукой NodeJs, Express, PostgreSql, pg-promise
Возник вопрос о том, как правильно отлавливать и отправлять sql ошибку на клиент.
Если SQL запрос не удался, например из-за того, что ключ уже используется, то все ок, получаю ошибку и могу отправить ее на клиент. Но что-то мне подсказывает, что в исходном виде отправлять ее нежелательно и это как минимум не user-friendly. Как по-хорошему это делается? Может есть какие-то npm пакеты, которые парсят код SQL ошибки и отдают читабельную краткую информацию? Или самому разбирать?
В моем случае есть запрос
self.updateInfo = function (user) {
return db.query("UPDATE users SET name=${name}, username=${username}, email=${email} WHERE (id=${id} AND activated = true) RETURNING *;", user);
}
В контроллере обычный then/catch
userSQL.updateInfo(user).then(function (newUser) {
response.json({
message: "user updated",
data: newUser
});
}).catch(function (error) {
handler.error(response, 400, error);
});
Пример SQL ошибки которую получаю
{"message":{"name":"error","length":305,"severity":"ОШИБКА","code":"23505","detail":"Ключ \"(username)=(test)\" уже существует.","schema":"public","table":"users","constraint":"users_username_key","file":"nbtinsert.c","line":"434","routine":"_bt_check_unique"}}