Node.js中Yelp Fusion分类筛选失效:指定Restaurants返回公园类结果
解决Yelp Fusion商家搜索分类筛选失效的问题
嘿,我刚好碰到过类似的问题!你设置了categories:"Restaurants"却收到公园、游乐场这类非餐厅结果,核心问题出在Yelp Fusion API对分类参数的严格要求上,下面给你一步步解决:
1. 用对分类的「别名」(全小写)
Yelp的categories参数不认你写的"Restaurants"这个显示标题,它只认官方定义的小写别名——也就是"restaurants"。你把参数值改成全小写的别名就好,这是最关键的一步。
2. 修正后的代码示例
直接调整你的搜索请求对象:
function yelpSearchReuslt(latitude, longitude, radius, listOfResult) { const searchRequest = { categories: "restaurants", // 这里改成小写的别名 latitude: latitude, longitude: longitude, radius: radius }; const client = yelp.client(API_KEY); client.search(searchRequest).then(response => { const firstResult = response.jsonBody.businesses; // 后续处理逻辑 }) }
3. 可选:客户端二次过滤兜底
要是担心API偶尔还有漏网之鱼,可以在拿到返回结果后,自己再做一层过滤,只保留确实属于餐厅类的商家:
client.search(searchRequest).then(response => { const allBusinesses = response.jsonBody.businesses; // 过滤出分类里包含restaurants别名的商家 const onlyRestaurants = allBusinesses.filter(biz => biz.categories.some(cat => cat.alias === "restaurants") ); // 接下来用onlyRestaurants做处理就好 });
为啥原来的代码没用?
当你传入"Restaurants"这种未被API识别的取值时,它会直接忽略这个筛选条件,相当于你没设置分类,自然就返回了附近所有类型的商家,这就是公园、游乐场出现在结果里的原因。
内容的提问来源于stack exchange,提问作者RAHUL SRV
相关产品推荐
相关产品推荐

