Добрый день. Пытаюсь сделать нормальную обработку ошибок на сервере, подключенному к Монго. Для этого мне нужно распознавать ошибки, связанные с самой БД. Например, когда я пытаюсь получить айтем по айди, а айди при этом невалидный.
Типо такого: 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". Но я не знаю, может в будущем из-за этого пробелмы будут.