2017-10-26 3 views
0

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?

+0

Ursache * querySearch * gibt nichts (aka * undefined *) –

+2

Was ist das erwartete Ergebnis von 'erwarten client.scroll ({ scrollId: response._scroll_id, scroll: 30er '}, erwarten getNextResults)'? – guest271314

+0

@ 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

Antwort

1

Dank @ Kaiidos Ratschlag habe ich einfach meine Methode neu geschrieben und den Rückruf entfernt. Ich habe den Callback zu einer eigenen Methode gemacht und jetzt funktioniert alles gut.

Verwandte Themen