一直在试图找到next()方法所做的很好的描述.在Express文档中,它表示next('route')可以用于跳转到该路由并跳过其间的所有路由,但有时会next在没有参数的情况下调用.有谁知道一个描述next函数的好教程等?
我的Node-Express应用程序出现以下错误
UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了未经.catch()处理的诺言而引起的。(拒绝ID:4)
至少可以说,我创建了一个类似于以下内容的辅助函数
const getEmails = (userID, targettedEndpoint, headerAccessToken) => {
return axios.get(base_url + userID + targettedEndpoint, { headers: {"Authorization" : `Bearer ${headerAccessToken}`} })
.catch(error => { throw error})
}
Run Code Online (Sandbox Code Playgroud)
然后我导入此辅助函数
const gmaiLHelper = require("./../helper/gmail_helper")
Run Code Online (Sandbox Code Playgroud)
然后像这样在我的api路由中调用它
router.get("/emailfetch", authCheck, async (req, res) => {
//listing messages in users mailbox
let emailFetch = await gmaiLHelper.getEmails(req.user._doc.profile_id , '/messages', req.user.accessToken)
.catch(error => { throw error})
emailFetch = emailFetch.data
res.send(emailFetch)
})
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,我认为我正在通过使用catch块来处理错误。
问题:有人可以向我解释为什么我得到此错误以及如何解决该错误?
嗨,我是 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
})
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息,说 userPassword 未定义,我不知道为什么。所以我的疑问是:为什么会发生这种情况,以及如何正确地做到这一点?
我也检查了这个问题,但他们没有帮助我:
我的控制台上的错误消息:
(node:28968) UnhandledPromiseRejectionWarning: ReferenceError: userPassword is not defined ...
(node:28968) …