# #javascript #firebase #react-native #google-cloud-firestore
Вопрос:
Я разрабатываю приложение для чата, которое хранит сообщения в облачном магазине FireStore. Моя проблема в том, что приложение загружает все сообщения при открытии комнат чата.
Я хочу, чтобы он загружал только 50 последних сообщений и позволял загружать дополнительные чаты при прокрутке списка. Я развиваюсь в React Native.
const [message, setMessage] = useState([]);
useEffect(() => {
const subscriber = firestore()
.collection('message')
.doc(props.chat.key)
.collection('messages')
.orderBy("msgDate", "desc")
.onSnapshot(querySnapshot => {
const tempMessage = [];
querySnapshot.forEach(documentSnapshot => {
tempMessage.push({
...documentSnapshot.data(),
key: documentSnapshot.id,
});
});
setMessage(tempMessage);
});
// Unsubscribe from events when no longer in use
return () => subscriber();
}, []);
<FlatList
inverted
data={message}
renderItem={({ item }) => (
<MessageItem msgItem={item} />
)}
/>
Редактировать: Понял, что я мог бы использовать .Предел(50) Чтобы загрузить только 50 документов. Все еще работает над обновлением при прокрутке.
Ответ №1:
Вы хотите ограничить свои данные. Вот документация Firestore по заказу и ограничению ваших данных в firestore.
Вы можете добавить в свой запрос условие для загрузки только последних 20-30 сообщений. OrderBy также будет полезен здесь, так как вы хотите получать последние сообщения. Вы можете заказать в установленное время ваши сообщения, чтобы получать последние сообщения.
Комментарии:
1. Спасибо, что выяснили это . Ограничение(50) было ответом, который мне нужен был только для получения определенной суммы. Теперь мне просто нужно выяснить остальное. 🙂 Поднял бы вас, но, похоже, мне не хватает требуемой репутации.. :/