Передать объект с помощью JS, выдать новую ошибку в узел - PullRequest
0 голосов
/ 05 октября 2019

Я хочу выдать ошибку в моем приложении узла следующим образом.

throw new Error({ status: 400, error: 'Email already exists' });

это даст мне следующий вывод.

Error: [object Object]

Я не могу получить доступ к свойствам этогообъект ошибки. Что я тут не так делаю?

Ответы [ 2 ]

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error

Объект Error принимает строковый параметр в качестве первого параметра.

JSON.stringify объект, если вы хотите вывести его на консоль.

throw new Error(JSON.stringify({ status: 400, error: 'Email already exists' }));

Вы получите что-то вроде этого: Uncaught Error: {"status": 400, "error": "Email уже существует"}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

2 голосов
/ 06 октября 2019

Конструктор для объекта Error ожидает строку, а не объект (поэтому ваша схема не работает).

Вы можете добавлять свои собственные пользовательские свойства в объект Error после того, каквы создаете его.

let err = new Error('Email already exists');
err.status = 400;
err.whateverElse = someValue;
throw err;

Стандартные свойства объекта ошибки (по некоторым причинам, я не знаю) не перечисляются, поэтому они не отображаются в некоторых контекстах (даже если они там есть),Любые новые свойства, которые вы добавляете с простым присваиванием, как указано выше, будут перечисляемыми.

К вашему сведению, вы делаете это в нескольких местах, вы также можете создать подкласс Error объекта и дать вашему подклассу конструктор, который принимает любые аргументы, которые выхочу дать это. Этот конструктор может затем вызвать super(msg) и затем добавить свои собственные свойства к объекту ошибки из аргументов конструктора.

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