从节点,mysql,koa中获取数据

我想从我的MySQL数据库中使用Koa和mysql节点包得到一些数据。 我正在查看co-mysql ,但是自述文件build议直接使用thunkify 。 所以我做了以下几点:

 const query = thunkify(connection.query.bind(connection)); 

这似乎工作,我现在可以做的:

 app.use(function * main() { const races = yield query( "SELECT * FROM `races` where '2016-01-19' between start_date and end_date" )(function(err, rows) { // rows is the data I need }); }); 

但是,我无法find一种方法来将thunk中的行数据返回到我的种族variables中。 我logging它,并显示正确的数据,但是当我尝试将其传回时,它总是返回undefined。 我从callback中尝试了几个方法,但我似乎无法弄清楚:

return rows生成yield rows (使callback生成器函数) return yield rows

我经常得到: TypeError: You may only yield a function, promise, generator, array, or object, but the following object was passed: "undefined"

races是一个数组,因为你正在使用thunkify进行query 。 co返回一个数组,用于调用具有多个值的callback(null, 1, 2, 3)函数(例如, callback(null, 1, 2, 3)返回[1, 2, 3]

如果您是Promisify queryraces将被分配到第一个返回的值,这似乎与您正在寻找的内联。

下面是一个在实践中显示的代码示例:

 var co = require("co") var promisify = require("bluebird").promisify var thunkify = require("thunkify") function async(callback) { callback(null, 1, 2, 3) } var p = promisify(async) var t = thunkify(async) co(function*() { let x = yield p() let y = yield t() console.log(x) console.log(y) }).then(() => {}) 

运行时, x的值为1y的值为数组[1, 2, 3]

你可以在这里运行Tonic: https : //tonicdev.com/56ab7cfc879afb0c002c1d49/56ab7cfc879afb0c002c1d4a