首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在查询中使用start_at() & end_at()?

如何在查询中使用start_at() & end_at()?
EN

Stack Overflow用户
提问于 2021-01-06 09:46:11
回答 1查看 181关注 0票数 2

我的Firebase实时数据库架构:

让我们假设在Firebase数据库模式之上。我想用order_by_key()获取前5个之后和前10个之前的数据,而不是更多。范围应为5-10。如图所示。

我的关键字总是以-开头。

我试过了,但是失败了。它返回0。我该怎么做呢?

代码语言:javascript
运行
复制
snapshot = ref.child('tracks').order_by_key().start_at('-\5').end_at(u'-\10').get()
EN

回答 1

Stack Overflow用户

发布于 2021-01-06 10:31:11

Firebase查询基于游标/锚定值,而不是偏移量。这意味着start_atend_at调用需要你所订购的东西的值,所以在你的按键中它们需要这些音符的键值。

要获得您指定的切片,您需要:

代码语言:javascript
运行
复制
ref.child('tracks').order_by_key().start_at('-MQJ7P').end_at(u'-MQJ8O').get()

如果您不知道这两个值中的任何一个,则不能指定它们,只能从第一个项目开始或从最后一个项目结束。

唯一的例外是,您可以指定limit_to_first而不是end_at来获取切片开始处的多个项目:

代码语言:javascript
运行
复制
ref.child('tracks').order_by_key().start_at('-MQJ7P').limit_to_first(5).get()

或者,如果您只知道最后一项的关键字,则可以使用以下命令获取之前的五项:

代码语言:javascript
运行
复制
ref.child('tracks').order_by_key().end_at('-MQJ8O').limit_to_last(5).get()

但您至少需要知道其中一个键,这通常是因为您已经将其显示为上一页的最后一项/下一页的第一项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65589088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档