2017-01-28 1 views
0

beheben, wenn ich versuche, Daten von Algolia mit Algolia Suche Helfer-Paket in Nodejs abzufragen. Zufällig erhalten Antwort in "Fehler" -Ereignis als unten.Wenn einmal diesen Fehler bekam dann immer erhalten diesen Fehler für die Abfrage bis Neustart nodejs.Wie kann ich AlgoliaSearchUnparsableJSONError von Algolia Search-Hilfspaket in Nodejs

Fehler: -

{ 
"name": "AlgoliaSearchUnparsableJSONError", 
"message": "Could not parse the incoming response as JSON, see err.more for details", 
"more": "<html>\r\n<head><title>400 Request Header Or Cookie Too Large</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<center>Request Header Or Cookie Too Large</center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n"`enter code here` 

mein Code: -

var algoliasearch = require('algoliasearch'); 
var algoliasearchHelper = require('algoliasearch-helper'); 
var client = algoliasearch(ALGOLIA_CLIENT_ID,ALGOLIA_TOKEN); 
var helper = algoliasearchHelper(client, ALGOLIA_INDEX, { 
        disjunctiveFacets: ['username'], 
        attributesToRetrieve: 'firstname,lastname' 
      }); 
helper.on('result', function (data) { 
});  
helper.on('error', function (data) { 
}); 
helper.clearRefinements(); 
helper.addDisjunctiveFacetRefinement('username', USERNAME); 
helper.search(); 

} 
+0

Erstens: Sie müssen de Code trennen und den Fehler. Zweitens: Sie können sehen, der Fehler ist im Text, sollte besser fragen, wie man genau diesen Fehler beheben und nicht einfach Titel: "Algolia AlgoliaSearchUnparsableJSONError". – josedlujan

Antwort

0

Dies ist eigentlich ein Fehler, der eine andere verursacht. Das nicht verarbeitbare JSON ist, weil der Algolia-Server HTML nicht JS zurückgibt, wenn es mit dem 400-Fehler antwortet. Vielleicht im Zusammenhang mit diesem Github issue.

Die eigentliche Frage ist, was schließlich diesen 400 Fehler an erster Stelle verursacht. Es sieht so aus, als ob es mit der Header-Länge des Requests zusammenhängt (wahrscheinlich nicht mit der Cookie-Länge, da Sie von Node anrufen). Ich würde empfehlen, Anforderungsheader zu protokollieren oder den ausgehenden HTTP-Aufruf über einen Proxy zu analysieren, um festzustellen, ob sich die Anforderung im Laufe der Zeit auf unerwartete Weise ändert.

0

Die Art der attributesToRetrieve ist Array von Strings wie es here erwähnt

var helper = algoliasearchHelper(client, ALGOLIA_INDEX, { 
    disjunctiveFacets: ['username'], 
    attributesToRetrieve: ['firstname', 'lastname'] 
}); 
Verwandte Themen