Después de no encontrar nada en línea, decidí escribir aquí. Necesito obtener todo el documento en la colección /user/uid en Node JS. Cuando uso el código de Firebase, responde así:
Promise {<pending>}¡Por favor, ayúdame!
PD: no quiero usar Firebase Admin SDK y esperar.
Código "completo"
var express = require('express'); const { initializeApp } = require("firebase/app"); const { getDatabase, ref, get, child, set, onValue} = require("firebase/database"); const { getFirestore, collection, getDoc, doc} = require("firebase/firestore"); const firebaseApp = initializeApp(firebaseConfig); // Get a reference to the database service var app = express(); const PORT = process.env.PORT || 5050 app.get('/', (req, res) => { res.send('This is my demo project') }); const db = getDatabase(); const firestore = getFirestore(); const document = getDoc(doc(collection(firestore, 'users'), "BW5kylV6rtZXtYibpKGc2m1asRm1")); console.log(document); //Response: "Promise {<pending>}""Las llamadas a métodos de Firebase son asincrónicas. Entonces, tanto para Admin SDK como para JS SDK, debe lidiar con la asincronía , ya sea usando then o usando async/await .
Si recibe Promise {<pending>} es porque el método asíncrono getDoc devuelve una Promesa y esta promesa no se cumple, pero aún está pendiente.
Por lo tanto, debe sumergirse en la documentación sobre cómo usar Promises... o las palabras clave async/await .
En su caso, lo siguiente hará el truco:
getDoc(doc(collection(firestore, 'users'), "BW5kylV6rtZXtYibpKGc2m1asRm1")) .then(snap => { console.log(snap.data()) })Sin embargo, si escribe este código para ejecutarlo en un servidor Node de su propiedad, le recomendaría usar el SDK de administrador.