[英]Node.js async try/catch error when getting data from mongoose
我正在尝试制作一个非常基本的登录页面,其中包含三个路由LOGIN 、 REGISTER和WELCOME 。 这个想法是您可以使用您选择的名称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.