我正在使用Sequelizejs,我尝试创建简单的用户验证功能
function ValidateIsUserLogged(sessionKeyInput) {
var result = app.get('dbContext').user
.find({
where: {
sessionKey: sessionKeyInput
}
})
.then(function (user) {
return user != null;
}, function (error) {
console.log(error);
});
return result;
}
在.then()用户很好,它是同一个正确的对象,一切都很好,但我希望得到的结果超出承诺。我已经尝试使用.success()。error(),现在使用.then()结果(几乎)相同,我得到一个空对象,我无法从promise中的函数得到结果。我试图在.then()中设置一个变量,但结果是同一个变量不改变它的值或函数已经返回了值(在赋值/更改值之前)。我知道这是异步方法,也许问题是关于承诺一般,但我已经在这里停留了好几天。任何帮助表示赞赏:)
答案 0 :(得分:0)
写同步等效词:
function validateIsUserLogged(sessionKeyInput) {
try {
var user = app.get('dbContext').user
.find({
where: {
sessionKey: sessionKeyInput
}
});
}
catch(error) {
console.log(error);
}
return user != null;
}
修改它:
function validateIsUserLogged(sessionKeyInput) {
try {
var user = app.get('dbContext').user
.find({
where: {
sessionKey: sessionKeyInput
}
});
}
catch(error) {
console.log(error);
}
return user;
}
将上述内容翻译成承诺:
function validateIsUserLogged(sessionKeyInput) {
return app.get('dbContext').user
.find({
where: {
sessionKey: sessionKeyInput
}
}).then(function(user) {
//This is pointless but I have no idea what you want to do
return user;
}, function(error) {
console.log(error);
});
}