Desarrollé esta función de base de fuego para devolver datos de mi búsqueda de aplicaciones (elástico). Cuando lo registro en la consola de funciones, puedo ver los datos de la solicitud y también puedo ver el cuerpo de la respuesta en mis registros de API de búsqueda de aplicaciones. Pero no puedo obtener los datos del cliente.
{ "meta": { "alerts": [], "warnings": [], "precision": 2, "page": { "current": 1, "total_pages": 1, "total_results": 2, "size": 10 }, "engine": { "name": "engine", "type": "default" }, "request_id": "DF4VEuzuQpWAHH8VCBkvDg" }, "results": [ { "nome": { "raw": "Produto legal" }, "_meta": { "engine": "engine", "score": 0.8957006, "id": "bnxvuzVXIQ4BxqHxjvgt" }, "id": { "raw": "bnxvuzVXIQ4BxqHxjvgt" } }, { "nome": { "raw": "Produto massa" }, "_meta": { "engine": "engine", "score": 0.3164503, "id": "rdG192xjSVCLIEBNg0la" }, "id": { "raw": "rdG192xjSVCLIEBNg0la" } } ] } exports.searchProdutos = functions.https.onCall((data, context) => { const options = { search_fields: { nome: {} }, result_fields: { nome: { raw: {} } }, }; const query = data.query; client .search("engine", `${query}`, options) .then((response) => { return response; }) .catch((error) => console.log(error.errorMessages)); });Pero cuando trato de llamarlo en el cliente y registrar la respuesta, obtengo dos objetos nulos registrados en la consola.
const searchProdutos = httpsCallable(functions, "searchProdutos"); const getProdutos = async () => { const results = await searchProdutos({ query: "produto" }); console.log(results.data); }; getProdutos();Información adicional: estoy usando Nodejs App Search en mis funciones y reacciono como mi biblioteca/marco frontend
Editar: también recibo una respuesta de 200. Así que supongo que no hay nada malo con la solicitud. Intenté eliminar .then de la función de mi cliente, pero sigo recibiendo data: {null} dos veces
Estoy publicando una respuesta Wiki de la comunidad para este hilo con el fin de tener una solución disponible para futuros usuarios. Según los comentarios de Kevin B en el hilo de la sala de chat , hay un problema con el código del lado del cliente que llama a su función Firebase. Cuando su código de cliente registra la respuesta con una declaración then , esta declaración then no devuelve la respuesta, sino un valor undefined , esto hace que la respuesta se pierda después de ser registrada.
Además, la función Firebase del lado del servidor no devuelve la promesa a la aplicación cliente dentro de la función client.search() . Según los comentarios de la sala de chat, su función de Firebase debería devolver la respuesta de client.search() .