Bluebird promise resolve 被捕获为错误
Bluebird promise resolve is being caught as an error
我正在使用对 return 用户数据的承诺,对他们进行身份验证,我的决心显示在我的 .catch 中以供我调用。
调用登录函数;
function(req, username, password, done) {
user.login(username, password).then( function(err, results){
if (err) throw err;
done(null, results.user);
}).catch(
function(err){
console.log("Failed to log in", err);
done(null, false);
}
);
}
这是承诺代码:
exports.login = function(username, password){
return new promise(function(resolve, reject){
var sql = `CALL LOGIN(?)`;
db.conn.query(sql, username, (err, results, fields) => {
if (err) {
reject("SQL ERR:", err);
}
var user = results[0][0];
if (!user.uID) {
reject("Incorrect username");
}
if(bcrypt.compareSync(password, user.pword)){
resolve(user);
} else {
reject('Incorrect password');
}
});
});
}
当调用它时,用户对象被作为错误抛出,即使它是在 resolve 上调用的...我目前被卡住了,我试图重新安装 bluebird 模块,以防它发生问题.
接下来的事情是这样的:
如果一切正常,您将在此处将用户对象作为参数传递
if (bcrypt.compareSync(password, user.pword)) {
resolve(user);
} else {
reject('Incorrect password');
}
因此,在代码的这一部分 .then
中,您接收到一个用户对象作为唯一参数,因此没有必要检查是否存在错误。
function (req, username, password, done) {
user.login(username, password).then(function(user) {
// a good way to see all arguments is
// console.log(arguments);
done(null, user);
}).catch(
function(err) {
console.log("Failed to log in", err);
done(null, false);
}
);
}
我正在使用对 return 用户数据的承诺,对他们进行身份验证,我的决心显示在我的 .catch 中以供我调用。
调用登录函数;
function(req, username, password, done) {
user.login(username, password).then( function(err, results){
if (err) throw err;
done(null, results.user);
}).catch(
function(err){
console.log("Failed to log in", err);
done(null, false);
}
);
}
这是承诺代码:
exports.login = function(username, password){
return new promise(function(resolve, reject){
var sql = `CALL LOGIN(?)`;
db.conn.query(sql, username, (err, results, fields) => {
if (err) {
reject("SQL ERR:", err);
}
var user = results[0][0];
if (!user.uID) {
reject("Incorrect username");
}
if(bcrypt.compareSync(password, user.pword)){
resolve(user);
} else {
reject('Incorrect password');
}
});
});
}
当调用它时,用户对象被作为错误抛出,即使它是在 resolve 上调用的...我目前被卡住了,我试图重新安装 bluebird 模块,以防它发生问题.
接下来的事情是这样的:
如果一切正常,您将在此处将用户对象作为参数传递
if (bcrypt.compareSync(password, user.pword)) {
resolve(user);
} else {
reject('Incorrect password');
}
因此,在代码的这一部分 .then
中,您接收到一个用户对象作为唯一参数,因此没有必要检查是否存在错误。
function (req, username, password, done) {
user.login(username, password).then(function(user) {
// a good way to see all arguments is
// console.log(arguments);
done(null, user);
}).catch(
function(err) {
console.log("Failed to log in", err);
done(null, false);
}
);
}