@mDrama

Почему в ошибке от Mongoose отсутствует свойство «name»?

Добрый день. Пытаюсь сделать нормальную обработку ошибок на сервере, подключенному к Монго. Для этого мне нужно распознавать ошибки, связанные с самой БД. Например, когда я пытаюсь получить айтем по айди, а айди при этом невалидный.

Типо такого: 127.0.0.1:8000/api/v1/tours/ssssss - ssssss в данном случае и есть айди.

По идее я должен делать это, проверяя свойство name в объекте с ошибкой: if (error.name === 'CastError'). Но у меня свойства name в ошибке тупо нет.

{
    "status": "error",
    "error": {
        "stringValue": "\"ssssss\"",
        "kind": "ObjectId",
        "value": "ssssss",
        "path": "_id",
        "reason": {},
        "statusCode": 500,
        "status": "error"
    },
    "message": "Cast to ObjectId failed for value \"ssssss\" at path \"_id\" for model \"Tour\"",
    "stack": "CastError: Cast to ObjectId failed for value \"ssssss\" at path \"_id\" for model \"Tour\"\n    at model.Query.exec (D:\\IT\\Node-Natours\\node_modules\\mongoose\\lib\\query.js:4351:21)\n    at model.Query.Query.then (D:\\IT\\Node-Natours\\node_modules\\mongoose\\lib\\query.js:4443:15)\n    at process._tickCallback (internal/process/next_tick.js:68:7)"
}


При этом в другом кейсе, когда я создаю документ с уже существующим названием, это поле там появляется.

На данный момент я сделал проверку по вот этому полю: "kind": "ObjectId". Но я не знаю, может в будущем из-за этого пробелмы будут.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы