繁体   English   中英

Node.js 从 mongoose 获取数据时出现异步尝试/捕获错误

[英]Node.js async try/catch error when getting data from mongoose

我正在尝试制作一个非常基本的登录页面,其中包含三个路由LOGINREGISTERWELCOME 这个想法是您可以使用您选择的名称email密码注册一个用户,此时您将被重定向到登录,您可以使用在进入欢迎页面之前创建的信息。

到目前为止,我一直将用户信息作为 object 保存到一个空数组中,然后使用passport-config搜索它以测试凭据。 显然,这是不安全的,并且在服务器重新启动后也无法保存信息。 为了解决这个问题,我开始将mongoose集成到我的项目中。 它工作正常,但是现在,当尝试检索我的用户列表以根据用户传递的信息检查它时,我收到以下错误:

ReferenceError: Cannot access 'user' before initialization

这对我来说真的很困惑,因为我的代码:

try {
  const user = await User.find(new RegExp(user.userEmail, 'i'))
  console.log(user)
  if (user == null) {
    return done(null, false, { message: "No User With That Email" })
  }
  try {
    console.log(password, user.userPassword)
    if (await bcrypt.compare(password, user.userPassword, function (e) { })) {
      return done(null, user)
    } else {
      return done(null, false, { message: "Password Incorrect" })
    }
  } catch (e) {
    return done(e)
  }
} catch (e) {
  return done(e)
}

包含在 try/catch 语句中。 还有bcrypt部分可以忽略,仅供参考。

首先,为什么我的 try/catch 仍然抛出错误,其次,为什么我得到initialization错误?

谢谢你,我很感激你的回复。

问题看起来就在这行代码中

const user = await User.find(new RegExp(user.userEmail, 'i'))

在这一行中,当您尚未事件初始化用户变量时,您尝试访问 user.userEmail 属性(您正在此代码行中对其进行初始化)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM