Недавно я создал простое приложение для чата с использованием Cloud Firestore и React Native. Их автономная и онлайн синхронизация - довольно хорошая функция.
Но на загрузку (чтение документов) уходит много времени.
Несмотря на то, что я разбил на страницы по 10 документов на каждого пользователя (10 пользователей), но загрузка сообщений очень медленная, при медленном интернет-соединении загрузка сообщений занимает до 10 секунд, что не очень удобно.
Здесь, когда я включаю автономный режим, он загружает сообщения немного быстрее (почти 3 секунды). Но вот проблема:
Теперь:
Можно загружать сообщения как в автономном режиме, так и сохранять сообщения как в автономном режиме, так и в сети.
Или есть какой-нибудь другой способ быстрее загружаться?
Когда я включаю автономную функцию в firebase, она не может сохранять сообщения на сервере, или я отключаю автономный режим при сохранении сообщений, а когда я загружаю сообщения, он загружает только автономные сообщения.
Пример:
async function getMessagesOfAllUser(userlist){
let outstate = false, data = {};
if (userlist !== null)
for (let i = userlist.length - 1; i >= 0; i--) {
outstate = await this.getMessagesOfOneUsers(userlist[i].user);
if (outstate !== false) data = { ...data, ...outstate };
if (i === 0) {
this.setState({ ...this.state, ...data });
}
}
}
function getMessagesOfOneUser(user) {
return db.collection('users/'+user/+'/messages').orderBy("dt", "desc").limit(10).get().then(snap => {
let l = snap.size;
if (l > 0) {
const ourMessage = this.state.me + user;
this.lastVisible = { ...this.lastVisible, ...{ [user]: snap.docs[l - 1] } };
for (let i = 0; i < l; i++) {
if (this.outState[ourMessage] !== undefined)
this.outState[ourMessage] = [...this.outState[ourMessage], snap.docs[i].data()];
else this.outState[ourMessage] = [snap.docs[i].data()];
if (i === l - 1) return this.outState;
}
}
return false;
});
}