无需迁移到Firebase的实时数据库。在最坏的情况下(具有大量数据的屏幕),可以结合使用redux-persist和此firestore查询来节省主要的firestore读取次数:
export const inboxLoadTest = (email,startAfter) => {
return dispatch => {
dispatch({ type: types.INBOX_LOADING });
firebase
.firestore()
.collection("conversations")
.where("members","array-contains",email)
.orderBy("lastMsgTime")
.startAfter([startAfter])
.onSnapshot(
querySnapshot => {
let conversations = [];
querySnapshot.forEach(queryDocumentSnapshot => {
const membersArr = queryDocumentSnapshot.get("members");
let conversation = {
id: queryDocumentSnapshot.id,conversant:
membersArr[0] === email ? membersArr[1] : membersArr[0],lastMsgTime: queryDocumentSnapshot.get("lastMsgTime")
};
conversations.push(conversation);
});
dispatch(loadInboxSuccess(conversations));
},errorObject => {
dispatch(loadInboxError(errorObject.message));
}
);
};
};
一旦加载了数据,redux-persist
将保存到异步存储中,以便在重新加载应用程序时,上述侦听器仅针对存储在redux / asyncstorage中的最后一条消息之后的消息触发,而不是整个消息集合,节省结果集,从而节省Firebase计费
本文链接:https://www.f2er.com/3163204.html