【发布时间】:2019-07-17 10:05:55
【问题描述】:
您好,我是 javascript 编程新手。
我有一个 node express 项目,我正在尝试在我的 AuthenticationController 类中创建一个登录方法。
我现在的登录方式是这样的:
const User = require('../models/User')
class AuthenticationController {
async login(req, res) {
const { email, password } = req.body
console.log('step 1')
var hashPassword = await userPassword(email)
console.log(hashPassword)
console.log('step 2')
return res.status(200).json({ 'msg': 'Log in OK!' })
}
userPassword(email) {
User.findOne({ email: email }).exec(function(err, user) {
if (err) return err
else return user.password
})
}
}
但是我收到一个错误,说 userPassword 未定义,我不知道为什么。所以我的疑问是:为什么会发生这种情况,以及如何正确地做到这一点?
我也检查了这个问题,但他们没有帮助我:
我的控制台上的错误消息:
(node:28968) UnhandledPromiseRejectionWarning: ReferenceError: userPassword is not defined ...
(node:28968) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1)
(node:28968) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
【问题讨论】:
-
await this.userPassword(email)因为userPassword在prototype上
标签: javascript node.js express mongoose async-await