diff --git a/plugins/dbgate-plugin-mongo/src/backend/driver.js b/plugins/dbgate-plugin-mongo/src/backend/driver.js index b810d1673..23aca12b6 100644 --- a/plugins/dbgate-plugin-mongo/src/backend/driver.js +++ b/plugins/dbgate-plugin-mongo/src/backend/driver.js @@ -260,14 +260,25 @@ const driver = { highWaterMark: 100, }); - exprValue - .forEach((row) => pass.write(transformMongoData(row))) - .then(() => { - pass.end(); - // pass.end(() => { - // pass.emit('end'); - // }) - }); + const cursorStream = exprValue.stream(); + + cursorStream.on('data', (row) => { + pass.write(transformMongoData(row)); + }); + + // Called once the cursor is fully read + cursorStream.on('end', () => { + pass.emit('end'); + }); + + // exprValue + // .forEach((row) => pass.write(transformMongoData(row))) + // .then(() => { + // pass.end(); + // // pass.end(() => { + // // pass.emit('end'); + // // }) + // }); return pass; // return directly stream without header row