0

我定期查询数据库以提取可能很大的数据集。为此,我使用 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 或其他客户端相比,查询将返回更少的结果,或者没有任何数据而不会引发任何错误。
数据库中的数据此时是静态的,不会改变。
Node.js v14.5.0 是 mysql2 2.5.0

4

1 回答 1

0

该问题在 Node.js v14.5.0 中出现,但在 14.14.0 及更高版本中没有。

于 2021-04-02T21:43:07.540 回答