我定期查询数据库以提取潜在的大型数据集。为此,我使用mysql2查询流,因此我可以通过异步迭代器使用它。
async* getData(startTime: Date, endTime: Date) : AsyncGenerator<any> {
const query = `
SELECT * FROM ${this.tableName} WHERE 1=1
AND createdAt >= ?
AND createdAt < ?
`;
const recordStream = this.connectionPool.query(query, [startTime, endTime]).stream({ highWaterMark: 1000 });
recordStream.on("error", async (error) => { await handleStreamError(error); });
for await (const record of recordStream) {
yield record;
}
}问题是,与sequalize或其他客户端相比,查询返回的结果会更少,或者没有数据,也不会抛出任何错误。
数据库中的数据在这一点上是静态的,不会改变。
mysql2 2.5.0是Node.js v14.5.0
发布于 2021-04-03 05:43:08
该问题在Node.js v14.5.0中表现出来,但在14.14.0及更高版本中则不存在。
https://stackoverflow.com/questions/66758450
复制相似问题