Цикл через ответ объекта elasticsearch в react

#reactjs #elasticsearch

#reactjs #elasticsearch

Вопрос:

Я делаю запрос api к elasticsearch, который отвечает объектом.. что-то вроде этого:

 {
"body": {
    "took": 34,
    "timed_out": false,
    "_shards": {
        "total": 2,
        "successful": 2,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2282,
            "relation": "eq"
        },
        "max_score": 1.6155963,
        "hits": [
            {
                "_index": "newspaper",
                "_type": "_doc",
                "_id": "aUU1IXUB9r40FEEAkQ8p",
                "_score": 1.6155963,
                "_source": {
                    "message": "message one",
                    "attachments": [],
                     .
                     .
                     .
                }
            },
            {
                "_index": "newspaper",
                "_type": "_doc",
                "_id": "aUU1IXUB9r40FEEAkQ8p",
                "_score": 1.6155963,
                "_source": {
                    "message": "message two",
                    "attachments": [],
                     .
                     .
                     .
 

Используя хуки, я инициализировал const [results, setResults] = useState({}); и установил результат после вызова axios просто отлично.

Если я получу ключи объекта следующим образом:

 return (
  <div id="results" className="search-results">       
    
    {(Object.keys(results))}
  </div>
);
 

Я получаю 5 ключей [«тело», «Код состояния», «заголовки», «предупреждения», «мета»]

bodystatusCodeheaderswarningsmeta

Как мне создать цикл, чтобы получить все сообщения внутри _source массива обращений внутри тела? хотел бы перечислить их.

Ответ №1:

Вы можете сделать что-то вроде этого:

 return (
    <div id="results" className="search-results">       

    {result amp;amp; result.body.hits.hits.map(hit=>(
        <p>{hit['_source']['message']}</p>
    )}

    </div>
);