![](/img/trans.png)
[英]Firebase function getting error when trying to write to firebase storage "Firebase Storage: User does not have permission to access"
[英]I just started with firebase and have problem with orderBy desc function when getting data
在function orderBy中傳“desc”參數時不返回數據,但傳“asc”或空白時有數據。
const getListProduct = async () => {
const products = await fs
.collection("products")
.orderBy("createAt", "desc") //problem is here.It just works orderBy("createAt", "asc") or orderBy("createAt")
.startAfter(0)
.limit(5)
.get();
let listProduct = [];
for (let snap of products.docs) {
let data = snap.data();
data.ID = snap.id;
listProduct.push({ id: snap.id, ...data });
if (products.docs.length === listProduct.length) {
setListData(listProduct);
}
}
};
startAfter()
中的值必須是DocumentSnapshot或要在之后開始此查詢的字段的值。 如果createAt
字段是時間戳,那么它必須是startAfter(<DATE_OBJ>)
或上次查詢的文檔快照,但您傳遞的是一個數字。 嘗試重構代碼,如下所示:
const products = await fs
.collection("products")
.orderBy("createAt", "desc")
.startAfter(new Date(2022, 8, 17, 6, 54, 0)) // for testing Date(year, date, month, hh, mm, ss)
.limit(5)
.get();
這應該按降序返回startAfter
小於提供的時間戳的所有產品。
let lastSnapshot = null; const q = fs.collection("products").orderBy("createAt", "desc") if (lastSnapshot) { // Query has been executed before, use last snapshot q.startAfter(lastSnapshot); } const products = await q.limit(5).get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.