所以我有一個承諾鏈,它解決了我遇到的某個回調地獄。在承諾鏈中混合變量
這裏的鏈條是什麼樣子:
server.exchange(oauth2orize.exchange.password(
function(client, email, password, scope, done) {
users.findOne({email: email})
.then(authenticateUser) // mix in password here?
.then(deleteExistingTokens)
.then(createAndSaveNewTokens)
.then(function(results){
done(null, results[0], results[1], {'expires_in': tokenLife});
}).catch(err => {done(err);});
}));
所以users.findOne返回返回我的用戶的承諾。我需要'混入'密碼以進行身份驗證。鑑於這是我對authenticateUser的定義,我將如何着手在鏈中插入新變量?
const authenticateUser = (err, user) => { // add password here?
return Promise((resolve, reject) => {
if (!user) {
reject('User not found');
}
try {
return User(user).authenticate(password)
.then((result) => {
if (result) {
resolve(user);
} else {
reject('Invalid password');
}
});
}
catch (err) {
reject('Invalid user');
}
});
};
的'這一定義authenticateUser'不使用它'then'兼容,或者通過'password'進去。它需要更新。 –
我做錯了什麼? –
我將它添加到我的答案中。 –