es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿En qué formato debe estar los datos enviados a una solicitud onCall de Google Cloud Functions?

Tengo la función en la nube de Google onCall más simple:

// [START]
exports.echo = functions.https.onCall(async (data, context) => {
  return {
    value: "echo"
  };
});
// [END]

Envío lo siguiente en la prueba de la consola de Google Cloud:

{"data":"somedata"}

Recibo el siguiente error:

{"error":{"message":"INTERNAL","status":"INTERNAL"}}

Parece que hay un problema con el objeto que estoy pasando. ¿Alguien puede decirme cuál es el formato correcto? ¿Qué me falta aquí?

P.D: En última instancia, estoy tratando de conectar una función onCall con una aplicación cliente a través de Firebase/fire, pero también está dando el mismo error.


Aquí está el rastreo:

/workspace/node_modules/firebase-functions/lib/common/providers/https.js:349:16 en fixedLen (/workspace/node_modules/firebase-functions/lib/providers/https.js:66:41) at /workspace/node_modules/firebase-functions/lib/common/providers/https.js:385:32 en processTicksAndRejections (internal/process/task_queues.js:95:5)
Unhandled error TypeError: res.on no es una función en /workspace/node_modules/firebase-functions/lib/common/providers/https.js:350:17 en new Promise (anónimo) en /workspace/node_modules/firebase-functions/lib/common/providers/https.js:349:16 en fixedLen (/workspace/node_modules/firebase-functions/lib/providers/https.js:66:41) en /workspace/node_modules/firebase-functions/lib/common/providers/https.js:385:32 en processTicksAndRejections (internal/process/task_queues.js:95:5)

Aquí está el index.ts:

import * as functions from "firebase-functions";

// La SDK de Firebase Admin para acceder a Cloud Firestore.
import admin = require("firebase-admin");

// Triggers
import { echo } from "./triggers/echo";

admin.initializeApp();

// Exports
module.exports = {
    // OnCall
    echo: functions.https.onCall(echo)
};
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El formato correcto para pasar datos a una función en la nube onCall es un objeto JSON con pares clave-valor. En este caso, el formato debería ser:

    {"data": "algundosdatos"}
    

    El mensaje de error sugiere que hay un problema con la respuesta que se envía desde la función. Es posible que el problema esté en la propia función echo, y sin ver el código de esa función es difícil diagnosticar el problema específico.

    Una posible causa del problema podría ser que la función echo no esté manejando correctamente los datos de entrada. Asegúrese de que la función espere un objeto con una clave “data” y que acceda correctamente al valor de esa clave.

    Además, asegúrese de que el SDK de Firebase Admin se inicialice correctamente antes de exportar la función en la nube. El mensaje de error sugiere que puede haber un problema con la inicialización correcta del SDK de Firebase Admin.

Comments are closed.