0

我正在使用 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() 中设置一个变量,但结果是同一个变量不会更改其值或函数已经返回该值(在分配/更改值之前)。我知道这是异步方法,也许问题是关于一般的承诺,但我已经在这里停留了几天。任何帮助表示赞赏:)

4

1 回答 1

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);
    });
}
于 2013-11-10T11:34:36.467 回答