javascript - Firebase 使用 orderBy 和 endAt
问题描述
"-MSxxx": {
"category": "Firuit",
"isBeverage": true,
"title": "Orange"
},
"-MQxxx": {
"category": "Firuit",
"isBeverage": false,
"title": "Orange Juice"
},
我有类似上面输出的数据。我使用 endAt () 和 limitToLast 参数将新数据加载为滚动。
Firebase 不允许我同时使用 orderBy 和 endAt() 参数。orderBy = "isBeverage" & equalTo = true & endAt = "- MSxxx" & limitToLast = 10。
当我向客户询问时,我遇到了问题。由于我列出了最后 10 个主题,因此如果该列表中不包含饮料,我将无法列出健康的列表。
我怎么能这样使用它?
解决方案
问题不在于一起使用orderBy
和endAt
,而是一起使用equalTo
和endAt
。
startAt
, equalTo
, 和endAt
, 都接受第二个参数,这是它们各自结果的关键。orderByChild("isBeverage").startAt(true, "-MQ")
读作:获取所有子节点isBeverage
,true
但子节点的键必须等于或大于-MQ
。
如果您想获取isBeverage
值为 的所有子true
项,直到具有键的子项-MSxxx
,您可以使用以下查询:
const query = firebase.database()
.ref('/path/to/data')
.orderByChild("isBeverage")
.startAt(true /* startAt value for isBeverage */)
.endAt(true /* endAt value for isBeverage */, "-MSxxx" /* key of last result */)
如果您想获取所有isBeverage
值为的子项,并使用true
以 开头的键,则-MS
可以使用:
const query = firebase.database()
.ref('/path/to/data')
.orderByChild("isBeverage")
.startAt(true, "-MS")
.endAt(true, "-MS\uf8ff")
推荐阅读
- reactjs - react js using hooks and redux-saga rerender a component repeatedly
- laravel - Paseto example with Graphql(Lighthouse Laravel)
- php - Laravel Image Library relationship
- django-rest-framework - 如何在 drf 的日期范围内获取项目
- r - 如何在 R 中使用带有 Vars 包的套索
- python - Tensorflow 实践特化 - 层序的输入 0 与层不兼容:预期 ndim=4,发现 ndim=5
- mongodb - Suppress alphabetical sorting of fields in Mongo query response (using Flask to wirte APIs to work with Mongo)
- python - 即使没有使用图像,PyTorch 也需要在 DataLoader 中具有类似图像的维度
- python - Rasa actions.py KeyError : 'location'
- javascript - JavaScript:时间和日期