Cómo hacer esto con Firebase versión 9 Web SDK
db.collection('rooms') .doc(id) .collection('messages') .orderBy('timestamp', 'asc') .onSnapshot((snapshot) => setState(snapshot.docs.map(doc => doc.data())) )Lo siguiente debería hacer el truco:
import { collection, query, orderBy, onSnapshot } from "firebase/firestore"; const id = ...; const messagesColRef = collection(db, "rooms", id, "comments"); const messagesQuery = query(messagesColRef, orderBy("timestamp")); onSnapshot(messagesQuery, (snapshot) => { setState(snapshot.docs.map(doc => doc.data())) });Echa un vistazo a la referencia de Firestore .
relacionado con su pregunta indirectamente, si desea postergar y actualizar a 9 pero dejar su código como está, puede usar el enlace de compatibilidad de la versión 9 (Compatibilidad). Simplemente reemplace su versión 8 con la versión 9 y agregue "-compat" antes de finalizar '.js' .eg
<script src="https://www.gstatic.com/firebasejs/9.3.0/firebase-app-compat.js"></script>de esta manera, no cambie su código mientras usa la última versión de firebase. La desventaja es que no te beneficiarás del module nature firebase 9.