Node.js CastError:值“0”的转换为ObjectId失败&引用;在路径上“_id";对于“型号”;“公司”;
我正在为一个项目使用一个样例MongoDB数据库,在使用findById mongoose方法时,我得到一个错误:“CastError:Cast to ObjectId在模型“Company”的路径“\u id”处的值“…”失败。我使用车把作为查看引擎 中间件文件:Node.js CastError:值“0”的转换为ObjectId失败&引用;在路径上“_id";对于“型号”;“公司”;,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在为一个项目使用一个样例MongoDB数据库,在使用findById mongoose方法时,我得到一个错误:“CastError:Cast to ObjectId在模型“Company”的路径“\u id”处的值“…”失败。我使用车把作为查看引擎 中间件文件: getCompanyData: async (req, res, next) => { // Queries const information = "name ipo founded_
getCompanyData: async (req, res, next) => {
// Queries
const information =
"name ipo founded_day founded_month founded_year description overview relationships";
// try {
const getCompanyData = await Companies.findById(req.params.id, information).exec();
console.log(getCompanyData);
// Coverting Mongoose Document to Object
const companyData = getCompanyData.toObject()
// console.log(companyData);
这是路由文件
// Company Route
router.get('/list/:id', getCompanyData, (req, res) => {
// console.log(req.companyData.name);
res.render('company', {
comapany: req.companyData
})
})
如果你遇到的是和我之前遇到的相同的事情…这是由你的路线代码顺序造成的。确保在您放置的路线上使用参数
// Company Route
router.get('/list/:id', getCompanyData, (req, res) => {
// console.log(req.companyData.name);
res.render('company', {
company: req.companyData
})
})
一直到代码的底部…因为假设您有另一个路由/列表/配置文件…它会给您这个错误,因为配置文件不是objectId。为什么要在findById()中传递变量
信息
,我认为您不能这样做。顺便说一句,您试图实现什么?他试图使用第二个参数作为字符串从结果中获取一些选择性字段。请console.log(req.params.id)并尝试将其类型转换为object id.id=mongoose.Types.ObjectId(req.params.id)