Después de ver el Tutorial de Firebase Cloud Function - REST API Parte 1 | Diligent Dev , pasé varias horas tratando de entender cómo obtener el registro completo que se publicó en firestore. Aquí está el código index.js:
const functions = require("firebase-functions"); const express = require("express"); const cors = require("cors"); const admin = require("firebase-admin"); admin.initializeApp(); const app = express(); app.use(cors({origin: true})); app.post("/", async (req, res) => { const user = req.body; await admin.firestore().collection("users").add(user); res.status(201).send(JSON.stringify(user)); });Los datos JSON que publiqué fueron:
{"id":123, "name":"Tony Stark", "email":"ironMan@MarvelComics.com"}En esta obtención, se devuelve la identificación, pero parece que no puedo acceder a las otras propiedades que forman parte del registro (nombre de ejemplo: Tony Stark).
app.get("/:id", async (req, res) => { const snapshot = await admin.firestore().collection("users").doc(req.params.id).get(); const userId = snapshot.id; const userData = snapshot.data(): constole.log(userData); res.status(200).send(JSON.stringify({id: userId, ...userData})); });Debe haber una solución simple, ¡pero console.log(userData) no es la respuesta! :-(
Casi me olvido de decir que mi solicitud del navegador pasa la identificación del usuario como un parámetro de consulta, en este ejemplo localhost:5001/projectReference/user/1 y también probé con la identificación del documento de Cloud Firestore (.../user/XRAwtfj9FSubeCArvUtQ ). En cada caso, veo en el navegador la cadena JSON {"id":"the_value_requested"} pero no userData.
¿Qué console.dir(userData) ? Eso debería ayudarlo a ver qué hay en el objeto devuelto.
¿Está seguro de que el nombre y el correo electrónico están realmente presentes en el registro en Firebase? Es posible que su recuperación funcione como se esperaba, pero los datos esperados no están allí.