2016-12-27 4 views
0

Ich benutze ejs Framework mit Knoten js. Ich kann alle Indexnamen im JSON-Format erhalten. Aber was ich will, sind nur die Namen der Indizes. Mein Code sieht aus wie als folgt-Elasticsearch zeigt nur den Namen aller Indizes mit Knoten 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 
     } 
    }); 
} 

wenn ich Antwort in Rückruf verwenden, erhalte ich die folgende Ausgabe:

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

und wenn ich response.hits.hits in Rückruf verwende ich den Fehler: "kann Eigenschaft 'Treffer' von undefined nicht lesen". Ich möchte nur die Indexnamen als Liste anzeigen. FYI, in Front-End, übergab ich die Antwort sagen als "Ergebnisse":

was natürlich nichts zeigt.

edit_1:

importiere ich das Modul wie folgt: in meinem index.js:

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

Wo importieren Sie das erste Modul? Zeig uns, wie du es machst. – jstice4all

+0

Überprüfen Sie auch die Eigenschaft response.errors in Ihrem Antwortargument. – jstice4all

+0

@ jstice4all Ich habe meine Frage bearbeitet und hinzugefügt, bitte sehen Sie, danke – Jane

Antwort

0

Wenn bei Ihrer Antwort Struktur

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

Sie jede hits nicht sehen, suchen, machst du? So ist response.hits undefiniert und der Fehler passiert, wenn man versucht, hits aus referenzieren von response.hits

Sie müssen lediglich Ihren Code wie folgt ändern:

callback(Object.keys(response)); 

Und dann Ihrer Ansicht nach können Sie so über das Array iterieren :

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