Express JS - сетевое соединение потеряно - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь настроить экспресс-сервер js, на котором будет размещаться база данных mongodb.Все довольно стандартно: у меня есть несколько открытых маршрутов, которые принимают данные от клиента и затем сохраняют их в базе данных.

Вот моя строка запроса:

let url = "http://xxx.xxx.xx.xxx:3000/update/data=" + JSON.stringify(params);

Что я заметил, так это то, что если params не содержит много информации, он работает нормально.Однако, если params содержит много информации, клиент выдает эту ошибку:

Failed to load resource: The network connection was lost.
Http failure response for (unknown url): 0 Unknown Error

(эта же ошибка возникает как в Safari, так и в Chrome.)

Например,, если params, как показано ниже:

{
  "accountId": "12345678910",
  "data": [
    1, 2, 3, 4
  ]
}

, тогда нет проблем.Однако, если params.data - это огромный массив с тонной информации, а не просто [1, 2, 3, 4], то выдается ошибка.

Кроме того, мой сервер экспресс никогда даже не получает запрос.Нет логов;ничего такого.То, что я ожидал бы получить, это просто нормальный ответ и результат, однако кажется, что клиент просто разочаровывается в отправке чего-то большого.Возможно, это связано с отправкой большой строки?

1 Ответ

0 голосов
/ 14 февраля 2019

Вы помещаете свои данные в свой URL.Но URL-адреса имеют ограниченную длину.

Вам нужно использовать POST и поместить свои данные в тело HTTP-запроса.

Вы не показали нам, как вы используете этот URL, поэтому трудновносить предложения по изменению вашего кода. Использование операции http-запроса - это путь .Нечто подобное может сработать ...

const payload = JSON.stringify(params); 
const url = 'http://xxx.xxx.xx.xxx:3000/update/';

const options = {
  method: 'POST',                         // <--- tell it to POST
  headers: {
    'Content-Type': 'application/json',   // <--- tell it you're posting JSON
    'Content-Length': payload.length;     // <--- tell it how much data you're posting.
  }
};

const req = http.request(url, options, (res) => {
  /* handle stuff coming back from request here */
  console.log(`STATUS: ${res.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
  res.setEncoding('utf8');
  let chunks=[];
  res.on('data', (chunk) => {
    chunks.push(chunk);
    console.log(`BODY: ${chunk}`);
  });
  res.on('end', () => {
    const resultingData = chunks.join();
    console.log('No more data in response.');
  });
});

req.on('error', (e) => {
  console.error(`problem with request: ${e.message}`);
});

// write data to request body
req.write(payload);
req.end();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...