【问题标题】:Firebase Using orderBy with endAtFirebase 使用 orderBy 和 endAt
【发布时间】:2021-02-27 12:13:29
【问题描述】:
"-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 个主题,因此如果列表中不包含饮品,我将无法列出健康的列表。

我怎样才能这样使用它?

【问题讨论】:

  • 您使用的是哪个 API? Javascript SDK、REST API 等
  • Firebase 实时数据库 - ReactJS (Javascript)

标签: javascript firebase firebase-realtime-database


【解决方案1】:

问题不在于同时使用orderByendAt,而是同时使用equalToendAt

startAtequalToendAt 都接受第二个参数,该参数是它们各自结果的关键。 orderByChild("isBeverage").startAt(true, "-MQ") 读作:获取所有isBeveragetrue 的孩子,但孩子的密钥必须等于或大于-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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多