NodeJS将数据从流发送到FrontEnd(ReactJS)

问题描述 投票:0回答:1

进展如何?

我如何将大数据(大请求)发送到FrontEnd?我是从PostgreSQL提取数据的,但是如何将此数据响应到FrontEnd(Json示例)? Thx

这是我的代码

const express = require('express');
const cors = require('cors');
const pool = require('./keys/db');
const QueryStream = require('pg-query-stream')
const JSONStream = require('JSONStream')

const app = express();

const PORT = process.env.PORT || 3000;

//middleware
app.use(cors());
app.use(express.json()) 


//starting server
app.listen(PORT,()=>{
console.log(`Server is running on port ${PORT}`)
});

app.get("/to",async(req,res)=>{
try {

    const anyData = await pool.connect((err, client, done) => {
        if (err) throw err;
        const query = new QueryStream(`SELECT"_reference180"."_description" AS person FROM "_reference180"  `)
        const stream = client.query(query)
        //release the client when the stream is finished
        stream.on('end', done)
        stream.pipe(JSONStream.stringify()).pipe(process.stdout) // i can see my data in console

    })
    res.send(anyData); // THIS DONT SEND MY DATA, sorry;)
} catch (e) {
    console.error(e.message);
}
});
javascript node.js json reactjs stream
1个回答
0
投票

您当前的代码将结果传递到控制台:

stream.pipe(JSONStream.stringify()).pipe(process.stdout);

您必须更改代码以将JSON字符串传递到http响应:

stream.pipe(JSONStream.stringify()).pipe(res);

由于您已将结果流式传输到http响应,因此可以删除此行:

res.send(anyData);
© www.soinside.com 2019 - 2024. All rights reserved.