【问题标题】:firebase database order by value working wrongfirebase 数据库按值排序工作错误
【发布时间】:2017-12-14 23:28:48
【问题描述】:

所以我有一个商店数据库,每个商店的名称前都有一个数字。它们以随机顺序添加,但我希望它们按 1 到 213 的顺序显示。我的问题是当我使用 orderbyvalue() 时,它会显示它们。

  • 1 家商店
  • 10家店
  • 11家店
  • 12家店
  • 13 店
  • 14家店
  • 15家店
  • 16家店
  • 17店
  • 18家店
  • 19店
  • 2 家店
  • 20家店
  • 21家店
  • 22店

等等。我需要它们显示 1,2,3,4,5 等而不是 1,10,11,12,13 等。

我应该用什么来解决这个问题?

【问题讨论】:

  • 您存储为字符串,因此您看到的是正确的顺序。您需要有数字字段并按此排序。
  • 你能把java代码发给你吗。
  • 这可以通过使用 for 语句轻松实现。
  • 感谢约翰帮助

标签: android firebase firebase-realtime-database


【解决方案1】:

前导零可能是一个临时解决方案,但就用户体验而言,这是错误的。您必须实现排序功能。此外,如果您的系统需要处理超过 999 家商店,您无需为此修改代码。

【讨论】:

    【解决方案2】:

    正如 John 评论的那样,您得到的顺序是预期的:因为您存储的是字符串,所以节点按字典顺序排列。

    如果您想按数字排序,则必须将值存储为数字,或者(在您的情况下更有可能)以与数字排序相同的字典顺序存储值。例如

    • 01店
    • 02店
    • 10家店
    • 11家店
    • 19店
    • 20家店
    • 21家店
    • 22店

    或者

    • 001 店铺
    • 002 店
    • 010店
    • 011店
    • 019店
    • 020店
    • 021店
    • 022店

    在这种情况下,字符串的这种填充/前缀是很正常的。主要缺点之一是您必须在开始项目时确定数字使用多少个字符。

    【讨论】:

    • 谢谢。没想过加零
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多