【问题标题】:NodeJS send data from stream to FrontEnd(ReactJS)NodeJS将数据从流发送到前端(ReactJS)
【发布时间】:2020-08-31 21:31:49
【问题描述】:

怎么样了?

如何向前端发送大数据(巨大的请求)?我是从 PostgreSQL 中提取数据,但是如何将这些数据响应前端(Json 示例)?谢谢

这是我的代码

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);
}
});

【问题讨论】:

  • 更新为 ```stream.pipe(JSONStream.stringify()).pipe(res)`` 并从您的代码中删除 res.send(anyData);

标签: javascript node.js json reactjs stream


【解决方案1】:

您当前的代码将结果通过管道传送到控制台:

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

您必须更改代码以将 JSON 字符串通过管道传输到 http 响应:

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

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

res.send(anyData);

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 2021-02-15
    • 1970-01-01
    • 2020-02-17
    • 2021-11-28
    • 2023-03-30
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    相关资源
    最近更新 更多