Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
¿Cuál es la versión 9 equivalente de esto en firebase?

Estoy tratando de convertir mi código de trabajo de la versión 8 a la versión 9, pero no puedo entender por qué recibo el error: 'FirebaseError: Tipo esperado 'Consulta', pero era: un objeto DocumentReference personalizado'. Parece que no es MessageRes, pero puse una consulta y creo que estoy obteniendo correctamente la subcolección.

 version 8: working export async function getServerSideProps(context) { const chatRef = db.collection('chats').doc(context.query.id); const messagesRes = await chatRef .collection('messages') .orderBy('timestamp', 'asc') .get(); const messages = messagesRes.docs .map(doc => ({ id: doc.id, ...doc.data(), })) .map(messages => ({ ...messages, timestamp: messages.timestamp.toDate().getTime(), })); const chatRes = await chatRef.get(); const chat = { id: chatRes.id, ...chatRes.data(), }; return { props: { messages: JSON.stringify(messages), chat, }, }; } version 9: export async function getServerSideProps(context) { const chatRef = doc(db, 'chats', context.query.id); const messagesRes = await getDocs( query(collection(chatRef, 'messages'), orderBy('timestamp', 'asc')) ); const messages = messagesRes.docs .map(doc => ({ id: doc.id, ...doc.data(), })) .map(messages => ({ ...messages, timestamp: messages.timestamp.toDate().getTime(), })); const chatRes = await getDocs(chatRef); const chat = { id: chatRes.id, ...chatRes.data(), }; return { props: { messages: JSON.stringify(messages), chat, }, }; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Según la documentación de la API :

 export declare function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>>;

Y en tu código estás haciendo:

 const chatRes = await getDocs(chatRef);

Es por eso que está viendo el error:

'FirebaseError: se esperaba el tipo 'Consulta', pero era: un objeto DocumentReference personalizado'.

porque está pasando la referencia de su documento y no una consulta .

Como hiciste aquí:

 const messagesRes = await getDocs( query(collection(chatRef, 'messages'), orderBy('timestamp', 'asc')) );

Puede ver el uso correcto de la API aquí .

about 4 years ago · Juan Pablo Isaza Denunciar

0

No funcionó para mí, pero lo modifiqué un poco y usé las colecciones de firebase 9 y filtré la colección donde context.query.id es válido para SSR antes de que se cargue la página.

 export async function getServerSideProps(context) { const chatID = context.query.id; const chatIDRef = collection(db, "chats"); //prep messages const messagesRes = await getDocs(chatIDRef, where(chatID, "==", chatID)); console.log("ctx log: ", messagesRes); const messages = messagesRes.docs .map((doc) => ({ id: doc.id, ...doc.data(), })) .map((messages) => ({ ...messages, timestamp: messages.timestamp?.toDate().getTime(), })); //prep chat const chatIDRef2 = doc(db, "chats", chatID); const chatRef = await getDoc(chatIDRef2); const chat = { id: chatRef.id, ...chatRef.data(), }; return { props: { messages: JSON.stringify(messages), chat: chat, }, }; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda