Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

809
Visualizações
Obtener todas las colecciones de un documento Firebase

Estoy creando una aplicación de tareas completas usando firebase para almacenar información del usuario. Mi idea es que cada usuario pueda crear varias listas y escribir varias tareas pendientes en cada lista (por ejemplo, tener una lista para hoy y otra para mañana). Mis datos están estructurados de esta manera:

pregunta de consulta de firestore

usuarios (colección) -> IDusuarios (cada usuario es un documento) -> Listas de todos (colección) -> todoId (documento) -> (objeto con los datos)

Parece que no puedo consultar las múltiples listas que un usuario podría tener (de manera predeterminada, actualmente solo estoy recuperando datos de la colección 'todos'). O no puedo ver alguna funcionalidad de Firestore o no estoy estructurando mi base de datos correctamente. ¿Algún consejo?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Estás estructurando bien tus datos. El problema es que Firebase Client SDK no ofrece una función para recuperar todas las subcolecciones que tiene un documento. Para resolver tu problema tienes múltiples opciones.

1. La forma más limpia pero exhaustiva

Actualiza al Plan Blaze y usa Firebase Functions con Admin SDK. Admin SDK ofrece una función llamada listCollections() que hace exactamente lo que desea. La desventaja es que las funciones de Firebase tienen algo llamado coldstart en frío, lo que significa que cuando su función estuvo inactiva durante algunos minutos, tarda hasta 20 segundos (según mi experiencia) en volver a ejecutarse después de llamarla, lo que puede ser realmente frustrante. De lo contrario, puede ejecutar un servidor node.js gratuito en algo como Heroku para usar el SDK de administrador allí para evitar el arranque en frío (mejor opción en mi opinión). El SDK de administrador no está destinado explícitamente a ser utilizado en el lado del cliente. Revisa este hilo

2. Haga una lista de todas sus listas de tareas pendientes (la forma más fácil)

Cada vez que el usuario crea una nueva lista, la agrega a una matriz en su documento de usuarios como esta:

 // Representation of your user document user name: "Florian" lists: [ "todos", "anotherList" ]

Entonces, de esa manera, puede buscar a su usuario, obtener la propiedad de las listas y llamar a todas las listas con un bucle sobre la matriz de lists . Como alternativa, simplemente muestre el contenido de las lists y deje que el usuario lo abra explícitamente para guardar las lecturas.

3. Reestructurar su base de datos (lo recomendaría)

Si aún no tiene muchos datos, le recomendaría reestructurar su base de datos de la siguiente manera:

 users - the collection with all your users (without the todo list subcollections lists - containing a document for every created list - each document contains a field with `owner` - each document contains a field with the list name - each document owns a subcollection with todos

Si usa esta forma, podría consultar la base de datos como

 const getLists = async () => { const ref = collection(db, 'lists'); const q = query(ref, where('owner', '==', theUserYouWantToQuery); // returns array with all list (including listname) of that user. const lists = (await getDocs(q)).docs.map(doc => ({ ...doc.data(), doc.id })); }

cuando tiene todos los objetos de lista de ese usuario, puede recorrer esa matriz para obtener todos en las listas o dejar que el usuario solo busque una lista abriéndola

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda