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

调用Mongoose的findByIdAndUpdate方法提示缺少模型绑定报错如何解决

问题定位
  • 报错的核心原因是你调用Model.findByIdAndUpdate()时错误添加了new关键字
  • findByIdAndUpdate属于Mongoose模型的静态方法,必须直接通过模型构造函数调用,添加new后会将方法作为实例构造函数执行,丢失了模型上下文绑定,因此抛出对应报错
  • 额外问题:你当前的写法没有处理findByIdAndUpdate的异步逻辑,就算去掉new也拿不到更新后的文档数据
解决方案

修改更新操作的代码,调整异步逻辑即可,修改后的完整接口代码如下:

// 给处理函数添加async修饰,支持await异步调用
const usuariosPut = async (req = request, res = response) => {
  const {id} = req.params;
  const {password, google, correo, ...resto} = req.body;
  if (password) {
      const salt = bcryptjs.genSaltSync();
      resto.password = bcryptjs.hashSync(password, salt);
  }
  // 去掉new关键字,添加await,补充常用配置项
  const usuario = await Usuario.findByIdAndUpdate(id, resto, {
    new: true, // 配置返回更新后的文档,默认返回更新前的旧数据
    runValidators: true // 配置触发Schema定义的字段规则校验,避免非法数据写入
  });
  res.json({
      msg: 'put API - controlador',
      id,
      usuario
  });
}

内容的提问来源于stack exchange,提问作者Josue Medina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:27:00