gpt4 book ai didi

mysql - 从 Node 、mysql、koa中的thunk获取数据

转载 作者:行者123 更新时间:2023-11-28 23:38:38 24 4
gpt4 key购买 nike

我想使用 Koa 和 mysql Node 包从我的 MySQL 数据库中获取一些数据。我在看co-mysql , 但自述文件建议直接使用 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
});
});

但是,我找不到将行数据从 thunk 返回/生成到我的 races 变量中的方法。我记录它,它显示正确的数据,但是当我尝试将它传回时,它总是返回未定义的。我从回调内部尝试了几种方法,但我似乎无法弄清楚:

返回行yield rows(使回调成为生成器函数)返回 yield 行...

我经常收到:TypeError:您只能生成一个函数、promise、生成器、数组或对象,但传递了以下对象:“undefined”

最佳答案

races 是一个数组,因为您正在使用 thunkify 进行 query。 co 为任何使用多个值调用其回调的 thunk 返回一个数组(即 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

关于mysql - 从 Node 、mysql、koa中的thunk获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com