如何在响应仍返回的情况下逐对象读取大型SOLR响应

时间:2018-10-12 11:55:24

标签: javascript solr

我正在向SOLR7.5查询一些大对象,并希望在返回它们时将其呈现到浏览器用户界面中。

使用选择请求处理程序时,我可以使用哪些选项来一点一点读取响应

2 个答案:

答案 0 :(得分:1)

我认为Solr并没有什么可以做您要问的。

处理此问题的一种方法是仅返回与查询中的条件匹配的文档ID(不包括文档的大部分),然后从客户端异步获取文档的大部分。

答案 1 :(得分:1)

我看错地方了。我只需要阅读我的webAPI fetch()。 response.json()读取完成响应。

response.body.getReader()允许您分块抓取流并从那里解码。

let test = 'https://my-solr7/people/select?q=something'
fetchStream(test);

function fetchStream(uri, params = {}){
  const options = {
    method: 'GET',
  };
  var decoder = new TextDecoder();
  fetch(uri, options)
  .then ()
  .then( (response) => {
  let read;
  const reader = response.body.getReader();
  reader.read()
    .then(read = (result) => {
      if (result.done) return;
      console.log(result.value);
      let chunk = decoder.decode(result.value || new Uint8Array, {stream: !result.done});
      console.log(chunk)
      reader.read().then(read);
    });
});

}