当我尝试使用nodejs中的algolia搜索帮助程序包查询来自algolia的数据时。在“错误”事件中随机获取响应,如下所示。一旦遇到此错误,则始终为查询获取此错误,直到重新启动nodejs。
错误: -
{
"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`
我的代码: -
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 :(得分:0)
这实际上是导致另一个错误的一个错误。不可解析的JSON是因为Algolia服务器在回复400错误时返回HTML而不是JS。可能与此Github issue有关。
真正的问题是最终导致400错误的原因。看起来它与请求标头长度有关(因为您从Node调用,可能不是cookie长度)。我建议记录请求标头或通过代理分析传出的HTTP调用,以查看请求是否以一种意外的方式随时间变化。
答案 1 :(得分:0)
attributesToRetrieve
的类型是字符串数组,因为它提到了here
var helper = algoliasearchHelper(client, ALGOLIA_INDEX, {
disjunctiveFacets: ['username'],
attributesToRetrieve: ['firstname', 'lastname']
});