Я посмотрел на этот пример https://cloud.google.com/firestore/docs/query-data/query-cursors => Paginate a query
, чтобы разбить мои данные на пожарные.
Загрузка данных работает нормально, и я получаю свои .limit(3)
сообщения, если ядостигла нижней части страницы.
Но если я прокручиваю снова до конца, функция снова запускается, это здорово, но она снова загружает те же данные и не загружает больше сообщений из firestore.
Надеюсь, кто-нибудь может мне помочь, спасибо!
Код: vuejs
mounted() {
this.loadMoreData();
},
methods: {
loadMoreData(posts) {
window.onscroll = async () => {
let bottomOfWindow =
document.documentElement.scrollTop + window.innerHeight ===
document.documentElement.offsetHeight;
var vm = this;
const db = firebase.firestore()
function getMorePosts() {
let first = db
.collection("users")
.doc(vm.userProfile.general.userId)
.collection("posts")
.orderBy("createdOn", "desc")
.limit(3);
return first.get().then(async documentSnapshots => {
// Get the last visible document
console.log(documentSnapshots);
var lastVisible =
documentSnapshots.docs[documentSnapshots.docs.length - 1];
console.log("last", lastVisible);
// Construct a new query starting at this document,
// get the next 3 posts.
const next = db
.collection("users")
.doc(vm.userProfile.general.userId)
.collection("posts")
.orderBy("createdOn", "desc")
.startAfter(lastVisible)
.limit(3)
.onSnapshot(snapshot => {
const allPosts = [];
snapshot.forEach(doc => {
allPosts.push(doc.data());
});
// set data to vuex
vm.$store.commit("posts/setProducts", allPosts);
});
});
}
if (bottomOfWindow) {
getMorePosts();
console.log("bottom");
}
}