Что это означает, что объект начинается с массива в JavaScript - PullRequest
3 голосов
/ 11 октября 2019

Иногда я получаю такую ​​ошибку, которая выдается из catch(err => console.log(err)):

{ [Error: SQLITE_ERROR: no such table: table_name] errno: 1, code: 'SQLITE_ERROR' }

Это похоже на объект, и да, но почему в начале есть массив?

Как мне получить этот массив?

Я хочу получить это сообщение об ошибке:

Error: SQLITE_ERROR: no such table: table_name

Чтобы решить, что делать дальше.

Я думал, чтосообщение об ошибке было частью имени ключа, поэтому я попытался:

Object.keys(err);

Но вернуть массив, подобный этому:

["errno", "code"]

Как получить это сообщение об ошибке?

Ответы [ 2 ]

3 голосов
/ 11 октября 2019

IIRC .... sqlite использует встроенный объект Error. В скобках вы видите , а не массив;на самом деле это читаемая человеком строка описания ошибки в квадратных скобках (возможно, для акцента).

try {
   ....
} catch (err) {
   console.log(err.message); // this should be your error message.
}
0 голосов
/ 11 октября 2019

Все, что выдает ошибку, не является простой строкой. Попробуйте другой способ ведения журнала, чтобы получить лучшее представление о том, что возвращается, поскольку console.log может не дать правильное значение ошибки при регистрации.

Попробуйте использовать console.log(JSON.parse(JSON.stringify(error))) и посмотрите, чтовернулся. Возможно, вам нужно сделать что-то вроде console.log(error.response.message) или что-то подобное, чтобы получить более полезную строку, которую вы можете использовать.

console.log также может запускать пользовательский метод toString для возвращаемого объекта,вот так, например: https://repl.it/@Twinbird24/WingedCloudyTrials

...