Stream query results as they become available
This commit is contained in:
1 parent
94756e463f
commit
adaf801d6e
1 file changed
+14
-6
+14
-6
@@ -221,12 +221,16 @@ for (const [resource, flags] of Object.entries(resources)) {
|
|||||||
|
|
||||||
let c = 0;
|
let c = 0;
|
||||||
ctx.body.write("[\n");
|
ctx.body.write("[\n");
|
||||||
await db.query(resource, filter, options, (obj) => {
|
db.query(resource, filter, options, (obj) => {
|
||||||
ctx.body.write((c++ ? "," : "") + JSON.stringify(obj) + "\n");
|
ctx.body.write((c++ ? "," : "") + JSON.stringify(obj) + "\n");
|
||||||
});
|
})
|
||||||
|
.then(() => {
|
||||||
ctx.body.end("]");
|
ctx.body.end("]");
|
||||||
|
|
||||||
logger.accessInfo(log);
|
logger.accessInfo(log);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ctx.body.emit("error", err);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// CSV download
|
// CSV download
|
||||||
@@ -285,7 +289,7 @@ for (const [resource, flags] of Object.entries(resources)) {
|
|||||||
ctx.body.write(
|
ctx.body.write(
|
||||||
Object.keys(columns).map((k) => `"${k.replace(/"/, '""')}"`) + "\n"
|
Object.keys(columns).map((k) => `"${k.replace(/"/, '""')}"`) + "\n"
|
||||||
);
|
);
|
||||||
await db.query(resource, filter, options, (obj) => {
|
db.query(resource, filter, options, (obj) => {
|
||||||
const arr = Object.values(columns).map((exp) => {
|
const arr = Object.values(columns).map((exp) => {
|
||||||
const v = evaluate(exp, obj, null, (e) => {
|
const v = evaluate(exp, obj, null, (e) => {
|
||||||
if (Array.isArray(e)) {
|
if (Array.isArray(e)) {
|
||||||
@@ -327,10 +331,14 @@ for (const [resource, flags] of Object.entries(resources)) {
|
|||||||
return v;
|
return v;
|
||||||
});
|
});
|
||||||
ctx.body.write(arr.join(",") + "\n");
|
ctx.body.write(arr.join(",") + "\n");
|
||||||
});
|
})
|
||||||
|
.then(() => {
|
||||||
ctx.body.end();
|
ctx.body.end();
|
||||||
|
|
||||||
logger.accessInfo(log);
|
logger.accessInfo(log);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ctx.body.emit("error", err);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.head(`/${resource}/:id`, async (ctx) => {
|
router.head(`/${resource}/:id`, async (ctx) => {
|
||||||
|
|||||||
Reference in new issue
Block a user