Получение дружественного сообщения об ошибке в транзакции Knex - PullRequest
0 голосов
/ 29 марта 2020

Я использую транзакции в 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) выше. Как вытащить только эту строку из ошибки? Я не могу понять, как получить только эту строку.

Спасибо!

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