Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

206
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!