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

MongoDB Atlas中Customer.update()不是函数错误求助

解决MongoDB Atlas更新条目时的TypeError: Customer.update() is not a function错误

错误原因

update()方法在Mongoose 5.x及以上版本中已被废弃,不再作为Model的直接方法提供,这就是调用Customer.update()时报错的核心原因。而find、add功能正常,是因为这些对应的方法(如find()、create())仍在当前Mongoose版本中支持。

解决方案

将代码中的Customer.update()替换为Mongoose推荐的更新方法,具体选择取决于业务需求:

  1. 更新单个文档:使用updateOne()

    // 原错误写法
    // Customer.update({ _id: id }, updatedCustomer, (err) => { ... })
    
    // 替换为回调风格
    Customer.updateOne({ _id: id }, updatedCustomer, (err) => {
      if (err) { /* 错误处理逻辑 */ }
      // 后续业务代码
    });
    
    // 或Promise风格
    Customer.updateOne({ _id: id }, updatedCustomer)
      .then(() => { /* 更新成功逻辑 */ })
      .catch(err => { /* 错误处理逻辑 */ });
    
  2. 更新多个文档:使用updateMany()
    若需要匹配多个文档并批量更新,用该方法替代原update()的多文档更新场景。

  3. 更新并返回更新后的文档:使用findOneAndUpdate()
    如需在更新后直接获取更新后的文档数据,这个方法更适配:

    Customer.findOneAndUpdate({ _id: id }, updatedCustomer, { new: true })
      .then(updatedDoc => { /* 使用更新后的文档数据 */ })
      .catch(err => { /* 错误处理逻辑 */ });
    

    注意{ new: true }选项会让方法返回更新后的文档,默认返回更新前的原始文档。

验证修改

修改代码后重新运行更新命令,即可正常执行数据库更新操作,不会再出现update() is not a function的错误。

内容的提问来源于stack exchange,提问作者Vinayak Chittora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:03