【问题标题】:Sequelize: How to access [object Promise] or return value from promise?Sequelize:如何访问 [object Promise] 或从 Promise 中返回值?
【发布时间】:2015-10-17 20:59:46
【问题描述】:

我有一种情况,我只想在他或她登录的情况下访问用户数据。我有以下代码在我不查询数据库时工作。这意味着var tmp 设置为YOUR_API_KEY。但是在查询数据库时,我得到 [object 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"
        }
}

【问题讨论】:

  • 你没有。您只能返回一个承诺,并通过.then() 回调“访问”它的异步结果

标签: javascript express nodes sequelize.js


【解决方案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)
});

【讨论】:

  • 对,问题是我要渲染一个页面。所以问题是我想等待渲染页面,直到我得到 APIKey。我想等到我得到所有东西,但我也不想把 res.render('index', {... 放在承诺中,因为它很快就会变得丑陋。
  • @DavidGatti,你可以先渲染页面,然后通过ajax请求获取APIKey =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2020-05-26
  • 2018-03-25
  • 1970-01-01
  • 2022-01-04
  • 2017-10-25
相关资源
最近更新 更多