我正在处理后端,我有这条路径应该从数据库返回一个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....]
但我得到一个非常奇怪的错误:
对于模型,路径“_id”处的值“list”的转换为ObjectId失败 “内部人员”CastError:对于值“list”at,转换为ObjectId失败 模型“内部人”的路径“_id” 在新的CastError(C:\ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ error \ cast.js:27:11) 在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) 在演员表(C:\ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ cast.js:300:32) 在model.Query.Query.cast(C:\ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ query.js:3309:12) 在model.Query.Query._castConditions(C:\ Users \ rutherfordc \ Documents \ GitHub \ ccs-express-mongo \ node_modules \ mongoose \ lib \ query.js:1293:10) 在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”)
答案 0 :(得分:0)
我认为问题在于您的查找方法尝试将其更改为此类
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
答案 1 :(得分:0)
原来这是路线优先问题。在/:insiderId
路线之前有一条/list
路线。
道歉。