我有這個清單:a b c d e f g h i j
。我想從列表中選取3個項目。如果我選擇了e
,結果列表應該是d e f
,如果我選擇了f
,結果應該是e f g
等等。在out
如何在Google Firestore中進行分頁?
console.clear()
var pag = dbFirestore.collection("pagination")
pag.doc("a").set({parent:"vowels"})
pag.doc("e").set({parent:"vowels"})
pag.doc("i").set({parent:"vowels"})
pag.doc("o").set({parent:"vowels"})
pag.doc("u").set({parent:"vowels"})
pag.doc("y").set({parent:"vowels"})
pag.doc("b").set({parent:"consonants"})
pag.doc("c").set({parent:"consonants"})
pag.doc("d").set({parent:"consonants"})
pag.doc("f").set({parent:"consonants"})
pag.doc("g").set({parent:"consonants"})
pag.doc("h").set({parent:"consonants"})
pag.doc("j").set({parent:"consonants"})
pag.doc("k").set({parent:"consonants"})
pag.doc("l").set({parent:"consonants"})
pag.doc("m").set({parent:"consonants"})
pag.doc("n").set({parent:"consonants"})
pag.doc("p").set({parent:"consonants"})
pag.doc("q").set({parent:"consonants"})
pag.doc("r").set({parent:"consonants"})
pag.doc("s").set({parent:"consonants"})
pag.doc("t").set({parent:"consonants"})
pag.doc("v").set({parent:"consonants"})
pag.doc("w").set({parent:"consonants"})
pag.doc("x").set({parent:"consonants"})
var siblings = ref => {
var out = []
return pag.orderBy("parent").endAt(ref).limit(3).get().then(snap=>{
snap.forEach(doc=>out.push(doc.id))
return
}).then(()=>{
return pag.orderBy("parent").startAfter(ref).limit(2).get().then(snap=>{
snap.forEach(doc=>out.push(doc.id))
return out
})
})
}
siblings(pag.doc("m")).then(out=>{
console.log(out)
}).catch(e=>console.error(e))
隨着sibling("m").then(out=>console.log(out))
我應該有k l m n p
,他們都有parent:"consonants"
,k l m
第一個查詢與n p
從第二查詢相結合,但我有別的東西:
我做了這個例子。
我向所有文檔添加了「{val:letter}」。 'startAfter(letter)'按預期工作得到'np',但是:'pag.where(「parent」,「==」,「consonants」)。orderBy(「val」)。endAt(「m」)。limit (3)'get'bcd'前3個輔音,而不是前面'kl'加'm' –
@AlinC是的,你是對的我犯了一個錯誤。在使用'endAt'和'limit'的屬中並不是一個好主意,因爲查詢結果將以這些更強的約束中的任何一個結束。讓我更新。 –
我認爲我們已經使用'unshift'而不是'push'來代替'threeBefore',因爲我們得到了'm l k n p'而不是'k l m n p'。我會盡量自我更新你的答案。我無法編輯它,我必須編輯更多,然後像6個字符。無論如何,我知道如何分頁知道,謝謝。 –