función de nube de base de fuego obtener documento dentro de devolució

función de nube de base de fuego obtener documento dentro de devolución de llamada

Con las funciones de Firebase Cloud, si quiero hacer referencia a un documento ('/usuarios/' + ID de usuario) dentro de una devolución de llamada, ¿es así como lo haría? el ID de usuario está dentro de la primera instantánea, por lo que necesitaría llamar a otra llamada asíncrona para obtener el documento de usuario, pero creo que algo está mal con mi sintaxis ya que esto genera un error.

exports.onCommentCreation = functions.firestore.document('/forum/threads/threads/{threadId}/comments/{commentId}')
 .onCreate(async(snapshot, context) => {

     var commentDataSnap = snapshot; 
     var userId = commentDataSnap.data().userId; 
     var userRef = await functions.firestore.document('/users/' + userId).get();
     var userEmail = userRef.data().email; 
});
Mostrar la mejor respuesta

Vas a tener que proporcionar su información de depuración aquí. No podemos ver cómo está activando esta función, los datos en sus documentos y variables, y el contenido de sus registros. Debe haber suficiente información aquí que cualquiera pueda usar para reproducir el problema como lo ve.

"ya que esto da un error" Edite su pregunta para mostrar el mensaje de error exacto y el seguimiento de la pila que obtiene.

ah gracias me funciono la respuesta

En esta línea var userRef = await functions.firestore.document('/users/' + userId).get(); cambie functions.firestore.document a admin.firestore().doc.

Algo como esto:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const db = admin.firestore();

exports.onCommentCreation = functions.firestore
  .document('/forum/threads/threads/{threadId}/comments/{commentId}')
  .onCreate(async (snapshot, context) => {

    // use const because the values are not changing
    const userId = snapshot.data().userId;
    const userRef = await db.doc('/users/' + userId).get(); // <-- this line
    const userEmail = userRef.data().email;
  });