Javascript 通过Firebase云函数调用第三方API(使用Blaze plan)。反应/重排

Javascript 通过Firebase云函数调用第三方API(使用Blaze plan)。反应/重排,javascript,reactjs,firebase,redux,google-cloud-functions,Javascript,Reactjs,Firebase,Redux,Google Cloud Functions,我正在尝试使用Firebase云函数向第三方API(Yelp)发出axios get请求。从我到目前为止阅读的相关问题来看,其他开发人员遇到类似的问题主要是因为他们在spark计划中,或者没有启用cors。我本人目前正在执行“烈火”计划 以下是问题的分类: -使用:反应/Redux -步骤: 1-我在我的操作文件(/actions/index)中编写了一个函数,用于对firebase云函数进行axios调用 /*操作/index.js*/ 从“./config/firebase”导入{dbCo

我正在尝试使用Firebase云函数向第三方API(Yelp)发出axios get请求。从我到目前为止阅读的相关问题来看,其他开发人员遇到类似的问题主要是因为他们在spark计划中,或者没有启用cors。我本人目前正在执行“烈火”计划

以下是问题的分类:

-使用:反应/Redux

-步骤:

1-我在我的操作文件(/actions/index)中编写了一个函数,用于对firebase云函数进行axios调用

/*操作/index.js*/
从“./config/firebase”导入{dbConfig};
从“/types”导入{登录、加载用户、加载活动、搜索场馆、检索匹配、保存场馆};
从“axios”导入axios;
导出常量searchActivities=(搜索)=>async(分派)=>{
/*调用云函数*/
axios.get(“https://us-central1-we-party-210101.cloudfunctions.net/searchActivities“,{头:{授权:`Bearer${dbConfig.apiKey}`}
。然后(res=>{
控制台日志(“搜索场地资源:”,资源数据);
派遣({
类型:搜索地点,
有效载荷:res.data
})
})
.catch(e=>{
日志(“searchActivities错误:”,e);
})

}
searchActivities函数必须将响应发送回客户端,以发出执行结束的信号

否则,函数将一直执行,直到1分钟的默认超时持续时间导致超时

您可以使用:

或者发送适当的响应

 cors(request, response, () => {
    // request to yelp api
    axios.get("https://api.yelp.com/v3/businesses/search", {
      headers: { Authorization: `bearer ${tokens.yelpKey}`}
    })
    .then(r => {
      console.log("Cloud yelp resp", r);
      response.send(r.data);
    })
    .catch(e => {
      console.log( "Cloud yelp error: ", e);
      response.sendStatus(500); // ¯\_(ツ)_/¯
    })
  })

哈哈,真的很简单。非常感谢:)没有更多的超时,但现在我的状态是400。这可能是因为我的问题,但使用相同的get请求(我们的云函数中的axios请求)从本地服务器调用api可以正常工作。我会检查yelp是否有任何限制。欢迎提出任何额外建议!这应该发生在对Yelp的请求中。当您运行
curl时https://api.yelp.com/v3/businesses/search -H“Authorization:Bearer”
在您的终端中,您会看到一个验证错误,它说应该指定一个位置或纬度和经度。这完全正确。我忘了从我在本地服务器上的调用中复制粘贴参数:(非常感谢!
 cors(request, response, () => {
    // request to yelp api
    axios.get("https://api.yelp.com/v3/businesses/search", {
      headers: { Authorization: `bearer ${tokens.yelpKey}`}
    })
    .then(r => {
      console.log("Cloud yelp resp", r);
      response.send(r.data);
    })
    .catch(e => {
      console.log( "Cloud yelp error: ", e);
      response.sendStatus(500); // ¯\_(ツ)_/¯
    })
  })