gpt4 book ai didi

javascript - 在高地流中执行node-mysql查询

转载 作者:行者123 更新时间:2023-11-27 23:43:40 25 4
gpt4 key购买 nike

我必须从输入文件中提取行,转换它们并将它们放入输出文件中。

由于输入文件很大,因此我借助 HighlandJS 对其进行流式处理。

转换步骤包括 MySQL 数据库中的异步查询(通过 node-mysql)和我无法找到如何管理流中的异步查询。我的不同尝试给出了错误或没有任何结果。

我最后的尝试是:

h(inputStream)
.split()
.through(JSONStream.parse())
.map(function (data) {
h.wrapCallback(pool.query(data, function (err, rows) {
return rows;
}));
})
.pipe(outputStream);

关于如何做到这一点有任何提示吗?

谢谢。

最佳答案

简短回答:您的 map 转换必须返回一些内容。现在它什么也没有返回。

长答案:

好吧,为了这个答案的目的,我将稍微简化一下你的逻辑。假设我们想要这个。

input -> map to rows -> output

问题在于映射是异步的,正如您所指出的,并且 map 函数必须返回一些内容。在这种情况下,您只需为输入中的每个元素返回一个流。所以它看起来像这样。

// input -> map to a stream of streams of rows -> output
h(input).map(h.wrapCallback(pool.query)).pipe(output);

最后一个问题实际上是获取行而不是流的流。您可以通过使用 flatMap 转换来完成此操作,该转换会将流的流“扁平化”为“正常”流。

// input -> map to a stream of rows -> output
h(input).flatMap(h.wrapCallback(pool.query)).pipe(output);

关于javascript - 在高地流中执行node-mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435046/

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