Есть ли способ отследить ошибки вставки базы данных, т.е. дублирующую запись, при использовании Adonis ORM в режиме только для API.
В приведенном ниже примере, если имя пользователя является дубликатом, оно просто отправляет внутреннюю ошибку сервера 500 и выдает клиенту полную html-страницу с ошибкой.
Даже если я неНе зная, что это за ошибка, я хотел бы, по крайней мере, иметь возможность ее перехватить и отправить более удобный объект json, такой как
{error: "Unable to insert user"}
Вот пример кода
const User = use('App/Models/User')
class UserController {
async register({ request }) {
const { username, email, password, first_name, last_name } = request.all()
const user = new User()
user.fill({
username,
email,
password,
first_name,
last_name
})
await user.save()
return user
}
}
Частично решено: Я частично решил эту проблему с помощью следующего кода, но я чувствую, что для достижения этой цели необходим лучший / встроенный способ.
const User = use('App/Models/User')
class UserController {
async saveData(object, errorMessage){
try{
await object.save()
return object
}
catch(err) {
return {error:`${errorMessage}`}
}
}
async register({ request, response }) {
const { username, email, password, first_name, last_name } = request.all()
const user = new User()
user.fill({
username,
email,
password,
first_name,
last_name
})
return this.saveData(user, "Unable to save user")
}
}