Отправка и получение большого объекта JSON в http
У меня есть такая конфигурация, что.
Сервер клиентских приложений, работающий на Nodejs с expressjs. Сервер API работает на Nodejs с expressJs, и я использую базу данных postgresql.
Когда мой клиент запросил данные с сервера API, сервер API выдает ошибку
"*Error is RangeError: Invalid string length*".
Я предполагаю, что причина в том, что API пытается ответить клиенту чрезвычайно большим массивом объектов Json, которые он извлекает из базы данных.
Теперь мой вопрос: как я могу отправить такой чрезвычайно большой объект Json в ответ http? И если отправлено успешно, как я могу справиться с этим на стороне клиента?
Я наткнулся на модуль JSONStream. Но я не смог найти хороший пример, который мог бы выбрать инструмент в моем сценарии.
2 ответа
Я думаю, что 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);
Всякий раз, когда нам приходится иметь дело с большими данными, и мы сталкиваемся с проблемами из-за этого, в таких сценариях данные всегда должны выбираться порциями, а не загружать все данные сразу. Поэтому в вашем сценарии я предлагаю вам загружать данные по частям.