我正在开发后端,并且我有这条路由,它应该只从数据库返回一个 ID 数组,以便稍后延迟加载。我的路线定义如下:
router.get('/list', (req, res) => {
Insider.find({}, {_id}).then(insiders => {
if (!insiders) {
res.status(400).json({ error: 'unable to find list of insiders' });
}
res.json(insiders);
}).catch(err => res.status(400).json(err));
});
它应该返回一个像这样的数组[_id, _id, _id...]
但是我遇到了一个非常奇怪的错误:
Cast to ObjectId failed for value "list" at path "_id" for model "insiders" CastError: Cast to ObjectId failed for value "list" at path "_id" for model "insiders" at new CastError (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\error\cast.js:27:11) at ObjectId.cast (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schema\objectid.js:158:13) at ObjectId.SchemaType.applySetters (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:724:12) at ObjectId.SchemaType._castForQuery (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1113:15) at ObjectId.SchemaType.castForQuery (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1103:15) at ObjectId.SchemaType.castForQueryWrapper (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\schematype.js:1082:15) at cast (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\cast.js:300:32) at model.Query.Query.cast (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\query.js:3309:12) at model.Query.Query._castConditions (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\query.js:1293:10) at model.Query.Query._findOne (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\mongoose\lib\query.js:1518:8) at process.nextTick (C:\Users\rutherfordc\Documents\GitHub\ccs-express-mongo\node_modules\kareem\index.js:333:33) at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickCallback (internal/process/next_tick.js:180:9)
我已经确认它实际上是泄漏到我的路由处理程序中的路由名称。 (即,我将 S&G 的路由更改为 /jerry
,并且错误中的“list”被替换为“jerry”)
最佳答案
我认为问题出在你的find方法中尝试将其更改为这样
router.get('/list', (req, res) => {
Insider.find({}, {id:0}).then(insiders => {
if (!insiders) {
res.status(400).json({ error: 'unable to find list of insiders' });
}
res.json(insiders);
}).catch(err => res.status(400).json(err));
});
我认为你应该使用 id 而不是 _id 并将其值设置为 0
关于javascript - MongooseJS 奇怪的转换错误,路由名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50707748/