Я использую транзакции в Knex для удаления и обновления некоторых данных, что прекрасно работает, но иногда возникают ошибки из-за одного из внутренних процессов. Я могу регистрировать ошибки и реагировать на них, но мне кажется, что я не могу получить «дружественное» сообщение об ошибке, описывающее ошибку. Вот пример:
Код транзакции:
try {
const trxResponse = await this.knex.transaction(async (trx) => {
// ... do some stuff ...
// Error is thrown within this operation
return await trx(this.tableName)
.insert(data)
.returning(this.fieldsToReturn);
});
return trxResponse;
} catch (err) {
console.log('handled', err, JSON.stringify(err), err.message);
throw new QueryError();
}
Приведенный выше console.log
печатает следующие значения для каждого (это реальные ошибки):
err
: { error: invalid input value for enum relationship: "yourself"... /* stack trace */
<- мне нужен этот текст без трассировки стека </p>
JSON.stringify(err)
: {"name":"error","length":102,"severity":"ERROR","code":"22P02","file":"enum.c","line":"60","routine":"enum_in"}
err.message
: insert into "beneficiary" ("application", "email", "firstName", "lastName", "middleInitial", "percentage", "relationship", "suffix") values ($1, $2, $3, $4, $5, $6, $7, $8), ($9, $10, $11, $12, $13, $14, $15, $16) returning "firstName", "lastName", "suffix", "middleInitial", "email", "percentage", "relationship" - invalid input value for enum relationship: "yourself"
Что Мне действительно нужен текст «ошибка», который отображается, когда вы console.log(err)
выше. Как вытащить только эту строку из ошибки? Я не могу понять, как получить только эту строку.
Спасибо!