Ich versuche, den Fehler vom Elasticsearch-Client zu analysieren, der über einen NodeJs Express-Routen aufgerufen wird. In meinem Fall ist es der Zeitüberschreitungsfehler, den ich identifizieren möchte.Wie verwendet man die Javascript Elasticsearch Client Fehler?
ich mehr oder weniger so etwas umzusetzen:
var client = new elasticsearch.Client({
host: process.env.ELASTICSEARCHLOCATION,
requestTimeout:500,
maxRetries:1
});
function returnResponse(response) {
return function (resp) {
//stringExtract
if (resp.hits && resp.hits.hits) {
response.status(200).send(resp.hits.hits);
}else{
response.status(200).send([]);
}
};
}
function handleError(response) {
return function(err){
if (err.statusCode == 404) {
response.status(200).send([]);
} else {
console.error(err.message);
response.status(err.statusCode).send(err);
}
}
}
router.get("/test", function (req, res, next) {
log.data("route GET: ", "/wynsureSearch/test");
log.request(req.url);
client .search({
index: process.env.ELASTICSEARCHINDEX, //target the wynsure version aka the ES DB index
type: [], //target the wynsure types
body: req.body
}).then(returnResponse(res), handleError(res));
})
Alle funktioniert gut, wenn es keine Fehler gibt. Aber wenn ein Timeout-Fehler auftritt, zeigt der Haltepunkt in der Funktion zurück von handleError()
mir dies:
ich von elastic.co errors documentation gelesen, dass es standars Fehler. Wie kann ich meine Funktion mit den Fehlern aus der Dokumentation übereinstimmen? Ich möchte in der Lage sein, RequestTimeout oder InternerServerError zum Beispiel zu entsprechen.
Ich kann Ihnen versichern, dass 'res' nicht undefiniert ist. Ansonsten scheint alles gut mit meinen Callbacks zu funktionieren (inklusive Scopes inclusive);) –