【发布时间】:2020-11-19 17:47:45
【问题描述】:
我正在为项目使用示例 MongoDB 数据库,在使用 findById mongoose 方法时,我收到错误:'CastError: Cast to ObjectId failed for value "..." at path "_id" for model "Company" '。我使用车把作为视图引擎。
中间件文件:
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
})
})
【问题讨论】:
-
你为什么要在 findById() 中传递变量
information,我认为你不能这样做。顺便说一句,你想达到什么目的? -
他正在尝试使用第二个参数作为字符串从结果中获取一些选择性字段。
-
请 console.log(req.params.id) 并尝试将其类型转换为对象 ID。 id = mongoose.Types.ObjectId(req.params.id)