Node.js从mongoose获取数据时出现异步try/catch错误



我正在尝试制作一个非常基本的登录页面,该页面有三个路由loginREGISTER欢迎。其想法是,您可以使用自己选择的名称电子邮件密码注册用户,此时您将被重定向到登录位置,在那里您可以使用在进入欢迎页面之前创建的信息。

到目前为止,我一直将用户信息作为对象保存到一个空数组中,然后使用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属性(您在这一代码行中初始化它(

最新更新