我如何从nodejs中的Algolia Search帮助程序包中修复AlgoliaSearchUnparsableJSONError

时间:2017-01-28 18:29:07

标签: javascript json node.js algolia

当我尝试使用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();

}

2 个答案:

答案 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']
});