Here is what I am trying to do.
- I am introducing functionality to enable users to search for local restaurants.
- I created a HTTP cloud function, so that when the client delivers a keyword, the function will call an external API to search for the keyword, fetch the responses, and deliver the results.
- In doing #2, I need to make two separate url requests and merge the results.
When I checked, the function does call the API, fetch the results and merge them without any issue. However, for some reason, it only returns null to the client.
Below is the code: could someone take a look and advise me on where I went wrong?
exports.restaurantSearch = functions.https.onCall((data,context)=>{ const request = data.request; const k = encodeURIComponent(request); const url1 = "an_url_to_call_the_external_API"+k; const url2 = "another_url_to_call_the_external_API"+k; const url_array = [ url1, url2 ]; const result_array = []; const info_array = []; url_array.forEach(url=>{ return fetch(url, {headers: {"Authorization": "API_KEY"}}) .then(response=>{ return response.json() }) .then(res=>{ result_array.push(res.documents); if (result_array.length===2) { const new_result_array_2 = [...new Set((result_array))]; new_result_array_2.forEach(nra=>{ info_array.push([nra.place_name,nra.address_name]) }) //info_array is not null at this point, but the below code only return null when checked from the client return info_array; } }) .catch(error=>{ console.log(error) return 'error'; }) }) }); Thanks a lot in advance!