Не удается найти свойство name в функции ошибок mon goose - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать функцию обработчика ошибок для mon goose CastError . Ошибка объект не включает поле имя , которое указывает тип ошибки, поэтому я не могу запустить оператор if, чтобы проверить, какой это тип ошибки. mon goose объект ошибки

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Я столкнулся с той же проблемой, следуя руководству Джонаса по node / express / mon goose. Возможно, в какой-то момент команда mon goose решила исключить свойство 'name' из объекта 'error' (это только моя догадка, а не факт). В любом случае, я решил эту проблему следующим образом: вместо проверки значения свойства name я проверил, начинается ли свойство stack объекта error со слов CastError. Если вы используете отладчик и проверите все свойства объекта error, вы заметите, что свойство stack начинается со слов CastError, когда mon goose не может использовать ID в URL для своих целей (очевидно, когда вы используете ID в контроллере в указанном c маршруте)

вкратце вместо

if(err.name === 'CastError').....

Я использовал

if(err.stack.startsWith('CastError')
0 голосов
/ 18 июня 2020

Я не совсем уверен, что вы делаете в своем коде, но похоже, что вы пытаетесь передать строковое значение для поля id. Но строка, которую вы передаете, не является допустимым идентификатором объекта, и вы не можете передать строковое значение в базу данных, которое не является допустимым идентификатором объекта. Сначала вам нужно проверить, является ли это допустимым идентификатором объекта. Вы можете сделать это, используя

var ObjectID = require('mongodb').ObjectID;
ObjectID.isValid(YOUR_STRING_HERE);

Вы можете проверить официальную документацию здесь Надеюсь, это поможет.

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