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推荐的更新方法,具体选择取决于业务需求:
更新单个文档:使用
updateOne()// 原错误写法 // Customer.update({ _id: id }, updatedCustomer, (err) => { ... }) // 替换为回调风格 Customer.updateOne({ _id: id }, updatedCustomer, (err) => { if (err) { /* 错误处理逻辑 */ } // 后续业务代码 }); // 或Promise风格 Customer.updateOne({ _id: id }, updatedCustomer) .then(() => { /* 更新成功逻辑 */ }) .catch(err => { /* 错误处理逻辑 */ });更新多个文档:使用
updateMany()
若需要匹配多个文档并批量更新,用该方法替代原update()的多文档更新场景。更新并返回更新后的文档:使用
findOneAndUpdate()
如需在更新后直接获取更新后的文档数据,这个方法更适配:Customer.findOneAndUpdate({ _id: id }, updatedCustomer, { new: true }) .then(updatedDoc => { /* 使用更新后的文档数据 */ }) .catch(err => { /* 错误处理逻辑 */ });注意
{ new: true }选项会让方法返回更新后的文档,默认返回更新前的原始文档。
验证修改
修改代码后重新运行更新命令,即可正常执行数据库更新操作,不会再出现update() is not a function的错误。
内容的提问来源于stack exchange,提问作者Vinayak Chittora
相关产品推荐
相关产品推荐

