потоковая передача ответа с помощью axios, но требуется только определенный ключ - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь передать входящий ответ, используя axios.Ответ представляет собой массивный объект JSON со многими ключами, но мне нужен только определенный ключ.Но значение в этом конкретном ключе - это массив, содержащий десятки мегабайт данных.Полезная нагрузка выглядит примерно так:

{
  "requestTime": "20190606",
  "fuelStations": [{
    "a": "begin",
    ...
  }, {
    "a": "massive",
    ...
  }, {
    "a": "array",
    ...
  }, {
    "a": "here",
    ...
  }],
  "some-other-key": "goes here",
  ...
}

Это то, что я использую для axios.Но я не уверен, как получить массив fuelStations из ответа во время его потоковой передачи.

axios.get(baseUrl, { responseType: "stream" }).then(response => {
  const stream = response.data;

  stream.on("data", chunk => {
    // ???
    // do something with just the fuelStations key, discard everything else
  };

  stream.on("end", () => console.log("all done streaming"));
});

1 Ответ

0 голосов
/ 15 июня 2019

Я использовал пакет stream-json. Код выглядит примерно так:

const stream = await axios
  .get(baseUrl, { responseType: "stream" })
  .then(response => response.data);

const pipeline = stream
  .pipe(Pick.withParser({ filter: "fuel_stations" }))
  .pipe(streamArray());

pipeline.on("data", ({ value }) => console.log(value));
pipeline.on("end", () => console.log("end"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...