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

登录表单从MongoDB取数触发Mongoose回调错误,求替代方案

解决Mongoose findOne() 不再支持回调的问题

新版Mongoose已废弃回调式API,Model.findOne()不再接受回调参数,可通过以下两种方式替代:

方案1:使用Promise的then/catch链式调用

app.post('/login', function(req, res) {
  monmodel.findOne({PhoneNo: req.body.phone, Password: req.body.password})
    .then(user => {
      if (user) {
        res.redirect('/hydrometer');
      } else {
        console.log('Invalid');
      }
    })
    .catch(err => {
      console.log(err);
    });
});

方案2:使用async/await(更易读)

将请求处理函数标记为async,用await等待查询结果,并通过try/catch捕获错误:

app.post('/login', async function(req, res) {
  try {
    const user = await monmodel.findOne({PhoneNo: req.body.phone, Password: req.body.password});
    if (user) {
      res.redirect('/hydrometer');
    } else {
      console.log('Invalid');
    }
  } catch (err) {
    console.log(err);
  }
});

额外提示

  • 确保查询条件中的字段名(如PhoneNo、Password)与你的Mongoose Schema定义完全一致
  • 生产环境中不要明文存储密码,建议使用bcrypt等库对密码进行哈希后再存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:02