我正在使用一種分頁方法,我想根據類別型別加載更多資料。目前我收到一個錯誤:
endBefore:已經設定了起點(通過另一個對 endAt、endBefore 或 equalTo 的呼叫)。
我知道我不能使用 endBefore 和 equalTo 但我找不到獲得我想要的東西的方法。如果有任何方法可以解決這個問題,那將是驚人的。這是我的代碼。
function getPost() {
const vibesQuery = query(
vibesRef,
orderByChild("category"),
equalTo(categoryType),
limitToLast(2)
);
onValue(vibesQuery, (snapshot) => {
const data = snapshot.val();
if (data) {
const vibesArray = Object.values(data);
setVibes(vibesArray.reverse());
setLastVibe(vibesArray[vibesArray.length - 1][sortingType]);
}
});
function getMorePosts() {
const vibesQuery = query(
vibesRef,
orderByChild("category"),
equalTo(categoryType),
endBefore(lastVibe),
limitToLast(2)
);
onValue(vibesQuery, (snapshot) => {
const data = snapshot.val();
if (data) {
const vibesArray = Object.values(data);
setVibes([...vibes, ...vibesArray.reverse()]);
setLastVibe(vibesArray[vibesArray.length - 1][sortingType]);
}
setIsMoreLoading(false);
});
}
我的資料結構是:
{
"-LbzPjzin65Rt3ZIK1Lo": {
"caption": "Great",
"category": "OUTDOORS",
"cityVibe": "Chino",
"stateVibe": "CA",
"creationDate": 1573942298.999069,
"fullname": "Bryant",
},
"-LbzPjzin65Rt3ZIK1Io": {
"caption": "Amazing",
"category": "OUTDOORS",
"cityVibe": "Chino",
"stateVibe": "CA",
"creationDate": 1576382057.7584639,
"fullname": "Bravo",
},
"-LbzPjzin65Rt3ZIK1Ao": {
"caption": "Beatiful",
"category": "OUTDOORS", <-- THIS IS MY (categoryType)
"cityVibe": "Chino",
"stateVibe": "CA",
"creationDate": 1586638159.889124, <-- THIS IS MY (lastVibe)
"fullname": "Bravo",
},
"-LbzPjzin65Rt3ZIK1Bo": {
"caption": "Fantastic",
"category": "OUTDOORS",
"cityVibe": "Chino",
"stateVibe": "CA",
"creationDate": 1604361787.34916,
"fullname": "Bravo",
},
}
如果有任何其他資訊,請告訴我,非常感謝!
uj5u.com熱心網友回復:
無法傳遞多個屬性值進行過濾。在這種情況下你可以做什么,它使用 Firebase 的startAt/endBefore多載,它帶有兩個引數。第一個值是您想要開始/結束的屬性值,但第二個引數是您想要開始/結束的節點的鍵,以防第一個值有多個匹配項。
因此,如果您在名為 的變數中擁有最后一種氛圍的鍵lastVibeKey,您可以執行以下操作:
query(
vibesRef,
orderByChild("category"),
endBefore(categoryType, lastVibeKey),
limitToLast(2)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517389.html
