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

Mongoose报错:Model.create()不再接受回调函数,求解决方案

解决Mongoose Model.create() 不支持回调的问题

原代码

app.post ('/create_contact',function(req,res) 
{
  contact.create({
    name :req.body.name,
    phone:req.body.phone
  },function(err,newContact)
  {
    if(err){console.log('error in creating a contact!');
    return;}

  console.log('********',newContact);
  return res.redirect('back');
  });
});

报错信息

throw new MongooseError('Model.create() no longer accepts a callback');
          ^
MongooseError: Model.create() no longer accepts a callback

问题原因

新版Mongoose已移除Model.create()方法的回调参数,必须改用Promise风格的异步写法。

修改方案

方案1:使用async/await(推荐,代码更清晰)

app.post('/create_contact', async function(req, res) {
  try {
    const newContact = await contact.create({
      name: req.body.name,
      phone: req.body.phone
    });
    console.log('********', newContact);
    return res.redirect('back');
  } catch (err) {
    console.log('error in creating a contact!', err);
    // 可选:返回错误状态码给前端
    // res.status(500).send('创建联系人失败');
    return res.redirect('back');
  }
});

方案2:使用Promise的then/catch

app.post('/create_contact', function(req, res) {
  contact.create({
    name: req.body.name,
    phone: req.body.phone
  })
  .then(newContact => {
    console.log('********', newContact);
    return res.redirect('back');
  })
  .catch(err => {
    console.log('error in creating a contact!', err);
    return res.redirect('back');
  });
});

排查提示

如果修改后仍报错,检查以下几点:

  • 是否完全移除了create()的第二个回调参数
  • async/await写法中,是否给路由处理函数添加了async关键字
  • 是否存在语法错误(比如括号不匹配、变量名拼写错误)
  • 在catch中打印完整错误信息,便于定位具体问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:13:11