使用
Model.find()
或 Model.find({})
时
我不断收到此错误
CastError: Cast to ObjectId failed for value "all" at path "_id" for model "Customer"
导致此错误的原因是什么?
这里有更多信息
{
messageFormat: undefined,
stringValue: '"all"',
kind: 'ObjectId',
value: 'all',
path: '_id',
reason: Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
statusCode: 500,
status: 'error',
message: 'Cast to ObjectId failed for value "all" at path "_id" for model "Customer"',
name: 'CastError'
}
这是一个很长的问题,但希望我的回答对将来有所帮助。 这段代码没有问题,但是在router中:
router.get('/:id', find);
router.get('/all', findAll);
这会导致路由器始终首先使用
/:id
路由,而不是 /all
,因此 mongoose 尝试将 all
转换为 id
并导致该错误消息。
只要颠倒这些线,问题就会消失:
router.get('/all', findAll);
router.get('/:id', find);