javascript - NodeJS将数据从流发送到前端(ReactJS)
问题描述
进展如何?
我如何将大数据(巨大的请求)发送到前端?我是从 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(process.stdout);
您必须更改代码以将 JSON 字符串传送到 http 响应:
stream.pipe(JSONStream.stringify()).pipe(res);
由于您已将结果流式传输到 http 响应,因此您可以删除此行:
res.send(anyData);
推荐阅读
- java - 引起:java.lang.NoSuchMethodError:org.apache.solr.client.solrj.impl.HttpSolrClient。
(Ljava/lang/String;)V - html - 在 google 上发送 2 个数字进行计算
- python - Tkinter 窗口在按一次退出后不会破坏,必须按 4 次退出才能关闭窗口
- django - 错误:在此服务器上未找到请求的 URL /media/
- python-3.x - 根据特定条件过滤掉列
- html - 为什么第一个 nth-child 选择所有这些?
- swift - 我正在尝试将变量从 UITabController 传递给 UIViewController 但没有运气?
- java - 为什么这个 Mockito.mock 对象被调用而不是被模拟?
- javascript - 1D -> 2D Array W/Normal Curve Sub-Array Lengths
- python - 如何使用参数和 --flags 调用另一个 python 文件