未处理的拒绝 - 护照登录应用程序节点 js
Unhandled Rejection - passport login app node js
我正在创建 nodejs
登录应用程序并使用 passport
js 进行身份验证。我使用本地 mysql 数据库并使用 sequelize
作为 ORM 库。
在我的用户模型中,我创建了通过用户名获取用户。
module.exports.findUserByUsername = function(username, callback){
User.findOne({ where: {username: username} }).then(function(user) {
var userObj = user.get({plain:true});
callback(userObj);
})
};
在路由器文件中
passport.use('login', new LocalStrategy(
function (username, password, done) {
User.findUserByUsername(username, function (err, user) {
if(err) {
throw err;
}
console.log(user);
})
}
));
我遇到错误 Unhandled rejection (<{object_values...>, no stack trace)
我该如何解决这个问题?
您需要像这样更改回调调用:
callback(null, userObj);
在路由器文件中您 throw
遇到错误时。在异步调用环境中抛出异常不是一个好习惯。无论如何,你调用 findUserByUsername
传递回调期望第一个参数是错误的。
在findUserByUsername
你return用户对象错误的地方。所以你在路由器文件中的逻辑认为这是一个错误。
为了避免此类异常,您无需抛出异常,return 它们在回调函数中。
我正在创建 nodejs
登录应用程序并使用 passport
js 进行身份验证。我使用本地 mysql 数据库并使用 sequelize
作为 ORM 库。
在我的用户模型中,我创建了通过用户名获取用户。
module.exports.findUserByUsername = function(username, callback){
User.findOne({ where: {username: username} }).then(function(user) {
var userObj = user.get({plain:true});
callback(userObj);
})
};
在路由器文件中
passport.use('login', new LocalStrategy(
function (username, password, done) {
User.findUserByUsername(username, function (err, user) {
if(err) {
throw err;
}
console.log(user);
})
}
));
我遇到错误 Unhandled rejection (<{object_values...>, no stack trace)
我该如何解决这个问题?
您需要像这样更改回调调用:
callback(null, userObj);
在路由器文件中您 throw
遇到错误时。在异步调用环境中抛出异常不是一个好习惯。无论如何,你调用 findUserByUsername
传递回调期望第一个参数是错误的。
在findUserByUsername
你return用户对象错误的地方。所以你在路由器文件中的逻辑认为这是一个错误。
为了避免此类异常,您无需抛出异常,return 它们在回调函数中。