Mongoose:查找所有给出转换错误的文档

问题描述 投票:0回答:1

使用

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'
}
javascript node.js database mongodb mongoose
1个回答
0
投票

这是一个很长的问题,但希望我的回答对将来有所帮助。 这段代码没有问题,但是在router中:

router.get('/:id', find);
router.get('/all', findAll);

这会导致路由器始终首先使用

/:id
路由,而不是
/all
,因此 mongoose 尝试将
all
转换为
id
并导致该错误消息。

只要颠倒这些线,问题就会消失:

router.get('/all', findAll);
router.get('/:id', find);
© www.soinside.com 2019 - 2024. All rights reserved.