收藏
回答

无法返回knex查询结果

const { MonitorDB: config } = require('../config')
 
/**
 * Get the latest temperature from DB
 */
async function get(ctx, next) {
 
  const MonitorDB = require('knex')({
    client: 'mysql',
    connection: {
      host: config.host,
      port: config.port,
      user: config.user,
      password: config.pass,
      database: config.db,
      charset: config.char,
    }
  })
 
  MonitorDB('temperature').select('*').then(function(rows) {
    ctx.state.code = 200
    ctx.state.data = { msg: 23.5 }
  })
  .catch(function(error) {
    console.log(error)
    tx.state.code = 500
    ctx.state.data = { msg: error }
  })
 
}

如上代码想实现一个get操作,这个操作会去查询DB,然后根据查询的结果返回不同的值。

但是每次API调用都不能then执行就返回了。我也知道这个then是异步调用,但是我怎么能够让这个get 函数停下来等待then执行,然后再返回呢?

回答关注问题邀请回答
收藏

1 个回答

  • 黄俊文 Jamen
    黄俊文 Jamen
    2018-05-09

    我今天也遇到这个,很痛苦。刚刚尝试在成功了。

    你可以这么做, 在 MonitorDB前面 加 await


    await MonitirDB('tem...').blabalbalbal

    2018-05-09
    有用
    回复
登录 后发表内容