Sequelize:如何访问[对象Promise]或从promise返回值?

时间:2015-10-16 12:04:43

标签: javascript express nodes sequelize.js

我有一种情况,我只想在他或她登录时访问用户数据。我有以下代码,当我不查询数据库时。这意味着var tmp设置为YOUR_API_KEY。但是在查询数据库时,我得到了[对象Promise]。我在谷歌搜索后尝试了不同的解决方案,但没有任何接缝来解决我的问题。

var tmp = function() {

   if(req.session.user) {

      return User.findOne({
         where: {
                    id: req.session.user.userID
                },
                include: [
                    { model: Apikey }
                ]
            }).then(function(sqlUser) {
                return sqlUser.Apikeys['0'].kay;
            });

        } else {
            return "YOUR_API_KEY"
        }
}

1 个答案:

答案 0 :(得分:1)

使用"回调"

var tmp = function(callback) {
  if(req.session.user) {
    return User.findOne({
      where: {
              id: req.session.user.userID
            },
            include: [
              { model: Apikey }
            ]
    }).then(function(sqlUser) {
      callback(sqlUser.Apikeys['0'].kay)
    });
  } else {
    callback("YOUR_API_KEY")
  }
}

//now you can use your function like this
tmp(function(apiKey){
  //do something with apiKey e.g.:
  console.log(apiKey)
});