2016-12-27 5 views
0

Я использую фреймворк ejs с узлом js. Я могу получить все имена индексов в формате json. Но я хочу только имена индексов. Мой код выглядит следующим образом-Elasticsearch показывает только имя всех индексов с узлом js

var client = require('../routes/Connection.js'); 

//display all indexes 
module.exports.allIndexes = function (searchData, callback) { 
    client.indices.getAliases({ 
     index: "_all", 
     level: "indices" 
    }, function (error, response, status) { 
     if (error) { 
      console.log("search error: " + error) 
     } 
     else { 
      //callback(response);---> this works 
      callback(response.hits.hits); // ---> this doesn't 
     } 
    }); 
} 

, если я использую ответ на обратный вызов, я получаю следующий результат:

{ 
    "index-1": { 
    "aliases": {} 
    }, 
    "index-2": { 
    "aliases": {} 
    }, 
    "index-3": { 
    "aliases": {} 
    }, 
    "index-4": { 
    "aliases": {} 
    } 
} 

и когда я использую response.hits.hits в обратный вызов я получаю сообщение об ошибке: msgstr "невозможно прочитать свойства" хитов "неопределенных". Я хочу показывать только имена индексов в виде списка. FYI, на переднем конце я ответил ответом как «результаты»:

 <h1>Index</h1> 
     <% for(var i=0; i < results.length; i++) { %> 
      <%= results[i].indices %> 
     <% } %> 

, который ничего не показывает.

edit_1:

импортировать модуль следующим образом: в моем index.js:

router.post('/indexes', function (req, res) { 
    elasticModule.allIndexes(req.body, function (data) { 
     res.render('elasticGui', { title: 'Elasticsearch GUI', results: data }); 
    }); 
}); 
+0

Где вы импортируете первый модуль? Покажите нам, как вы это делаете. – jstice4all

+0

Также проверьте свойство 'response.errors' в аргументе ответа. – jstice4all

+0

@ jstice4all Я отредактировал свой вопрос и добавил, что, пожалуйста, посмотрите, спасибо – Jane

ответ

0

При взгляде на вашу структуру ответа

{ 
    "index-1": { 
    "aliases": {} 
    }, 
    "index-2": { 
    "aliases": {} 
    }, 
    "index-3": { 
    "aliases": {} 
    }, 
    "index-4": { 
    "aliases": {} 
    } 
} 

вы не видите hits, вы? Так response.hits неопределен и ошибка происходит при попытке ссылки hits из response.hits

Вам просто нужно изменить свой код так:

callback(Object.keys(response)); 

, а затем на ваш взгляд, вы можете перебрать этот массив, как это :

<% results.forEach(function(index) { %> 
     <%= index %> 
    <% }); %>