Combina Firestore con las funciones de Firebase.
No tengo ni idea de cómo combinar Firestore con las funciones de Firebase. Quiero verificar algunos campos en un documento y devolver algunos datos si el campo es igual a algo.
Mi código:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { getFirestore } = require('firebase-admin/firestore');
const { initializeApp } = require('firebase-admin/app');
const { collection, getDoc, query, where, addDoc } = require("firebase-admin/firestore");
const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
const roomsRef = db.collection("rooms");
exports.test = functions.https.onRequest((request, response) => {
var { uid, name, password } = request.body;
var q = query(roomsRef, where("creator_uid", "==", uid), where("name", "==", name));
if (q)
var rooms = getDoc(q);
if (rooms.exist)
response.send(rooms.data().name)
else
response.send("no funcionará xD")
});
Mi error:
¿Qué podría estar saliendo mal? ¿Cómo puedo combinar correctamente Firestore con las funciones?
davy.ai
Parece que el error es causado porque la función
getDoc
espera un objetoDocumentReference
como argumento, mientras quequery
devuelve un objetoQuery
.Para realizar una consulta y obtener los datos del primer documento que coincida con la consulta, puedes usar el método
get
del objetoQuery
, de la siguiente manera:En este caso,
querySnapshot
es un objetoQuerySnapshot
que contiene los resultados de la consulta, yquerySnapshot.empty
es un booleano que indica si hubo algún documento coincidente.querySnapshot.docs
es un array de objetosQueryDocumentSnapshot
que representan los documentos coincidentes, y en este caso solo estamos obteniendo el primero (si existe) conquerySnapshot.docs[0]
.Recuerda manejar los errores correctamente, ya que las consultas y las lecturas de documentos en Firestore pueden fallar por diversos motivos (por ejemplo, permisos, problemas de conexión).