Node.js async try/catch 从 mongoose 获取数据时出错
Node.js async try/catch error when getting data from mongoose
我正在尝试制作一个非常基本的登录页面,其中包含三个 routes LOGIN, REGISTER,以及 欢迎。这个想法是您可以使用您选择的 name、email 和 password 注册用户此时您将被重定向到登录页面,您可以在其中使用您在进入欢迎页面之前创建的信息。
到目前为止,我一直将用户信息作为对象保存到一个空数组中,然后使用 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 属性,但您尚未对用户变量进行事件初始化(您正在该代码行中对其进行初始化)
我正在尝试制作一个非常基本的登录页面,其中包含三个 routes LOGIN, REGISTER,以及 欢迎。这个想法是您可以使用您选择的 name、email 和 password 注册用户此时您将被重定向到登录页面,您可以在其中使用您在进入欢迎页面之前创建的信息。
到目前为止,我一直将用户信息作为对象保存到一个空数组中,然后使用 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 属性,但您尚未对用户变量进行事件初始化(您正在该代码行中对其进行初始化)