【问题标题】:A promise is created but not returned from it一个承诺被创建但没有从它返回
【发布时间】:2018-01-27 02:00:03
【问题描述】:

我正在努力解决这个问题......但无论我把 return 放在哪里,我都会收到这个警告......

警告:在 home/app/server/node_modules/express/lib/router/index.js:280:7 的处理程序中创建了一个承诺,但没有从它返回 服务器 |在 ._doFetch (/home/app/server/node_modules/bluebird/js/release/method.js:13:13)

module.exports = {
    getUser: (req, res) => {
        var found_user = User.query({where: {email: req.body.email}, orWhere: {username: req.body.email}}).fetch()

        found_user.then(user => {
            if (user) {
                res.status(200).json(user)
            } else {
                res.status(422).json(new error.ERROR_422("No user found under username/email"));
            }
        })
        .catch(err => {
            console.log(err)
            res.status(500).json(new error.ERROR_500(err));
        })

    }

我正在使用 Bookshelf.js,我应该在这里返回什么?

【问题讨论】:

  • 尝试使用return found_user.then...
  • 是什么给你的错误?我向你保证,你在这里所做的一切都没有错。某处可能有一个过分热心的 eslint 文件吗?
  • @GeorgeMauer 这就是我感到沮丧的原因,我的意思是,它们都是警告而不是错误,代码运行良好,只是知道我在哪里得到这个
  • 对,那么您是在什么时候看到的?在运行时在您的控制台中?保存文件时在文本编辑器中?在构建过程中?我们的开发环境中有一些东西正在这样做,但不幸的是我们无法猜测。
  • 也许使用Promise.resolve();

标签: javascript node.js promise bookshelf.js


【解决方案1】:

您必须从导出的方法中返回承诺,以便可以在外部处理承诺。尝试将其更改为类似

module.exports = {
  getUser: (req, res) => {
    var found_user = User.query({where: {email: req.body.email}, orWhere: {username: req.body.email}}).fetch()

    found_user.then(user => {
      if (user) {
        res.status(200).json(user)
      } else {
        res.status(422).json(new error.ERROR_422("No user found under username/email"));
      }
    })
    .catch(err => {
        console.log(err)
        res.status(500).json(new error.ERROR_500(err));
    })

    return found_user // <<<--- Add this
  }

【讨论】:

    猜你喜欢
    • 2016-03-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多