Aquí está mi código de recorte de React Native que estoy usando para mi aplicación móvil. Por favor, ayúdenme con esto, no puedo esperar 30 segundos por solo 50k de datos. imagina el tiempo que tardará en cargar 500k de datos o más
useEffect(() => {
const fetchData = () => {
setLoading(true);
firestore().collection('FData')
.orderBy('counter', 'desc') //order using firestore counter
.limit(50) //limiting value
.onSnapshot(snapshot => {
var items = [];
snapshot.forEach((doc)=> {
items.push({ id: doc.id, ...doc.data() });
});
setLoading(false);
setList(items);
})
};
fetchData();
}, []);
Puede intentar ordenarlos en la aplicación. Pero creo que su principal problema es que intenta obtener 50k elementos con UNA solicitud. Es demasiado. 10 artículo está bien. Más de 100 - no está bien.
Por favor, ayúdenme con esto, no puedo esperar 30 segundos por solo 50k de datos.
Al leer documentos de 50k, son demasiados datos para leer de una sola vez. Tenga en cuenta que el rendimiento de la consulta en Firestore depende de la cantidad de documentos que solicite y no de la cantidad de documentos que busque. Así que realmente no importa si busca 10 documentos en una colección de 100 documentos o en una colección que contiene 100 MIL documentos, el tiempo de respuesta siempre será el mismo. Entonces, para poder leer datos rápidamente, le recomiendo que los cargue en fragmentos más pequeños. Esta práctica se llama paginación y puede implementarse de forma muy sencilla utilizando cursores de consulta si se echa un vuezo a la documentación oficial .
Además de eso, dado que todo en Firestore se trata de la cantidad de lecturas que realiza, leer 50k documentos a la vez puede ser un poco costoso.