You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB调用findById时报Cannot read properties of undefined错误如何解决

问题根因排查

    1. 变量覆盖问题
      你在函数开头声明了局部变量let Customer,初始值为undefined,完全覆盖了外层你提前定义好的Mongoose Customer模型。调用undefined的findById方法就会触发你收到的报错。你需要先在文件顶部引入已经定义好的Customer模型,不要在该中间件函数内重复声明同名局部变量。
    1. 参数语法错误
      Customer.findById(req.params,id)这里的逗号属于语法错误,你实际想要获取的是路径参数中的id,正确写法应该是req.params.id,当前的写法相当于给findById传入了两个不相关的参数,即使修复了第一个问题也无法正确查询数据。

修正后的代码示例

// 首先要确保你已经在文件顶部引入了提前定义好的Customer模型,类似:
// const Customer = require('../models/customer')

async function getCustomer(req, res, next) {
  let customer
  try {
    // 修复两个错误:用外层的Customer模型,正确获取req.params.id
    customer = await Customer.findById(req.params.id)
    if (customer == null) {
      return res.status(404).json({ message: 'Cannot find Customer' })
    }
  } catch (err) {
    return res.status(500).json({ message: err.message })
  }
  res.customer = customer
  next()
}

注:这里把查询结果的变量名改成小写customer,避免和模型名Customer重名,降低变量混淆的概率

内容的提问来源于stack exchange,提问作者Cherif Farah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:54:05