Estoy tratando de obtener una respuesta de una función en la nube de Firebase, pero lo único que obtengo es nulo. La salida de la consola muestra que el comando fetch funciona y genera los datos correctos.
exports.create = functions.https.onCall((data, context) => { fetch("https://mywebsite.com/x", { method: "POST", headers: { "Authorization": "Bearer MyKey", }, body: JSON.stringify({"myData":data.myData}) }).then( function(response) { if (response.status !== 200) { console.log('Looks like there was a problem. Status Code: ' + response.status); return; } // Examine the text in the response response.json().then(function(data) { console.log(data); }); return data.json(); } ) .catch(function(err) { console.log('Fetch Error :-S', err); });});
Intenté usar Promise , intenté regresar como json y, al igual que return data nada parece funcionar. El resultado siempre es null
El código que uso para llamarlo en mi aplicación flutter:
HttpsCallable callable = FirebaseFunctions.instance.httpsCallable('create'); final response = await callable.call(<String, dynamic>{ 'myData': 'data', }).then((value) => print(value.data));No está devolviendo nada del código de nivel superior en su función, lo que significa que Cloud Functions finaliza el contenedor cuando se ejecuta el } final, mucho antes de que se complete la llamada de fetch .
Para permitir que la llamada de fetch se complete y devolver un valor a la persona que llama, asegúrese de return desde el nivel superior de su cde:
exports.create = functions.https.onCall((data, context) => { // 👇 return fetch("https://mywebsite.com/x", { ...