无法返回knex查询结果
发布于 7 年前 作者 chaolong 13734 次浏览 来自 问答
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 回复

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

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

await MonitirDB(‘tem…’).blabalbalbal

回到顶部