gewartet Ich habe diese Methode, die Ergebnisse von ElasticSearch erhält. Ich kann die Ergebnisse einzuloggen, damit ich weiß, dass es sie bekommt ..Warum ist dieses Versprechen (async/warte nicht) auf
async querySearch(queryObj) {
let hits = [];
const client = this.client;
client.search({
index: this.index,
scroll: '30s',
body: {
query: {
match: {
_all: queryObj.q,
},
},
},
}, async function getNextResults(error, response) {
console.log(' getting more... ');
response.hits.hits.forEach((hit) => {
hits.push(hit);
console.log(' >> hits is ', hits.length);
});
if (response.hits.total > hits.length) {
await client.scroll({
scrollId: response._scroll_id,
scroll: '30s'
}, await getNextResults);
} else {
console.log(`NOW ${response.hits.total} <= ${hits.length}`);
console.log(' XXX hits is ', hits.length);
// console.log('got lota of results : ', hits);
return hits;
}
});
}
aber der Anrufer, hier wird ‚undefined‘ und wartet nicht auf das Ergebnis weitergegeben werden ...
async querySearch(queryObj) {
const hits = await this.connector.querySearch(queryObj);
return hits;
}
Warum passiert das und wie kann ich es beheben? Wie bekomme ich meine Treffermenge aus meiner Submethode heraus?
Ursache * querySearch * gibt nichts (aka * undefined *) –
Was ist das erwartete Ergebnis von 'erwarten client.scroll ({ scrollId: response._scroll_id, scroll: 30er '}, erwarten getNextResults)'? – guest271314
@ guest271314, holen Sie sich die nächsten ElasticSearch-Ergebnisse (die nächste Scroll-Seite) ... die Sub-Methode führt eine Schleife durch die Scroll-Seiten, um alle Ergebnisse zu erhalten - insgesamt etwa 200. – brainstormtrooper