1

我有一个配置是这样的。

使用 expressjs 在 Nodejs 上运行的客户端应用程序服务器。API 服务器在 Nodejs 上使用 expressJs 运行,我正在使用 postgresql 数据库。

当我的客户端从 api server 请求数据时,api server 抛出错误

"*Error is  RangeError: Invalid string length*". 

我猜它的原因是,api 正试图用一个非常大的 Json 对象数组来响应客户端,它是从数据库中获取的。

现在我的问题是,如何在 http 响应中发送如此大的 Json 对象?如果发送成功,我该如何在客户端处理它?

我遇到了 JSONStream 模块。但是,我找不到一个可以在我的场景中选择工具的好例子。

4

2 回答 2

1

我认为 BodyParser 会有所帮助..

var bodyParser = require('body-parser');

 app.use(bodyParser.urlencoded({
    parameterLimit: 100000,
    limit: '50mb',
    extended: true
  }));

这将增加 json 在 http 请求和响应上的大小

您还可以检查:-

const fs = require('fs');
const server = require('http').createServer();

server.on('request', (req, res) => {
  const src = fs.createReadStream('./big.file');
  src.pipe(res);
});

server.listen(8000);

Ref- Freecodecamp链接

于 2018-06-28T12:17:26.553 回答
-4

每当我们必须处理更大的数据并因此而面临问题时,在这种情况下,应该始终以块的形式获取数据,而不是一次加载所有数据。所以在你的场景中,我建议你分部分加载数据。

于 2018-06-28T07:20:12.783 回答