CastError:模型“公司”的路径“ _id”的值“ ...”的强制转换为ObjectId失败

时间:2020-07-30 02:47:35

标签: node.js mongodb mongoose

我正在为项目使用示例MongoDB数据库,而在使用findById猫鼬方法时,出现错误:'CastError:模型“公司”的路径“ _id”的值“ ...”的对象ID转换失败'。我正在使用把手作为视图引擎。

error

中间件文件:

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
  })
})

1 个答案:

答案 0 :(得分:1)

如果您遇到的情况与我之前遇到的相同...这是由您的路由代码的顺序引起的。确保在您放置的路线上使用参数

// Company Route
router.get('/list/:id', getCompanyData, (req, res) => {
  // console.log(req.companyData.name);
  res.render('company', {
    company: req.companyData
  })
})

一直到代码的底部...因为假设您有另一条路线 /list/profile...它会给您那个错误,因为 profile 不是 objectId。