Неправильный тип @ types /asticsearch SearchResponse - PullRequest
2 голосов
/ 17 апреля 2019

Когда я использую ElasticsearchService из @ nestjs /asticsearch, результат ответа не соответствует типу SearchResponse из @ types /asticsearch, потому что SearchResponse является объектом, но на самом деле я получаю массив с объектом SearchResponse и кодом статуса Http,кто-нибудь знает, как это отключить?

Пример:

[
  {
    ...,
    "aggregations": {
      "backendVersions": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
          {
            "key": "1.0.0",
            "doc_count": 1
          }
        ]
      }
    }
  },
  200
]

1 Ответ

2 голосов
/ 17 апреля 2019

Служба ElasticsearchService @ nestjs /asticsearch обертывает клиента es с bindNodeCallback , это объясняется в doc .

Итак, это:

client.search({
  index: 'my-index',
  body: { foo: 'bar' }
}, (err, body, statusCode, headers) => {
  if (err) console.log(err)
})

Будет преобразовано в наблюдаемую, которая будет выдавать значение с аргументами из обратного вызова минус ошибка в массиве.

service.search({
  index: 'my-index',
  body: { foo: 'bar' }
}).subscribe(value => {
  console.log(value); // [body, statusCode, headers]
});

Вы не можете отключить это, но вы можете напрямую использовать клиентаasticsearch, используя getClient():

const searchResponse = await service.getClient().search({
  index: 'my-index',
  body: { foo: 'bar' }
});

Также имейте в виду, что будет критические изменения в @astic /asticsearch [7.x] :

client.search({
  index: 'my-index',
  body: { foo: 'bar' }
}, (err, { body, statusCode, headers, warnings }) => {
  if (err) console.log(err)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...