Я пытаюсь проверить, когда перья js выдают ошибку, содержащую данные о БД, чтобы я мог предотвратить ее отображение на стороне клиента. Я понял, что в пользовательской функции обработчика ошибок, которая принимает HookContext в качестве аргумента, когда ошибка связана с БД, объект context.error содержит дополнительное поле, обозначенное как [Symbol(feathers-knex/error)]
.
Вот как выглядит console.log(context.error)
:
{
type: 'FeathersError',
name: 'BadRequest',
message: "insert into `users` (`created_by_uid`, `id`) values (DEFAULT, NaN) - Unknown column 'NaN' in 'field list'",
code: 400,
className: 'bad-request',
data: undefined,
errors: {},
hook: null,
[Symbol(feathers-knex/error)]: Error: Unknown column 'NaN' in 'field list'
at Packet.asError (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/packets/packet.js:708:17)
at Query.execute (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/commands/command.js:28:26)
at Connection.handlePacket (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/connection.js:408:32)
at PacketParser.onPacket (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/packet_parser.js:75:16)
at TLSSocket.<anonymous> (/Users/matthewwolfe/vretta/mpt-api/node_modules/mysql2/lib/connection.js:328:25)
at TLSSocket.emit (events.js:305:20)
at TLSSocket.EventEmitter.emit (domain.js:483:12)
at addChunk (_stream_readable.js:341:12)
at readableAddChunk (_stream_readable.js:316:11)
at TLSSocket.Readable.push (_stream_readable.js:250:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:186:23) {
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'NaN' in 'field list'"
}
}
Проблема, с которой я столкнулся, связана с попыткой доступа к этому полю. Когда я набираю Object.keys(context.error)
, это другое поле, которое я ищу, не отображается. Отображаются только 8 клавиш, те, что выше того, что я ищу.
Я пробовал выполнить context.error [Symbol ('перья-knex / error')], но это оказалось неопределенным. Я полагаю, это может иметь какое-то отношение к квадратным скобкам вокруг ключа?
Как мне получить доступ к этому полю?