2017-06-26 2 views
1

So habe ich eine Datenbank von Geschäften und jeder Laden hat eine Nummer vor seinem Namen. Sie werden in zufälliger Reihenfolge hinzugefügt, aber ich möchte, dass sie in der Reihenfolge von 1 bis 213 angezeigt werden. Mein Problem ist, wenn ich orderbyvalue() verwende, zeigt sie sie an.Firebase-Datenbank Reihenfolge nach Wert funktioniert falsch

  • 1 Shop
  • 10 Shop
  • 11 Shop
  • 12 Shop
  • 13 Shop
  • 14 Shop
  • 15 Shop
  • 16 Shop
  • 17 Shop
  • 18 Shop
  • 19 Shop
  • 2 Shop
  • 20 Shop
  • 21 speichern
  • 22 speichern

Und so weiter. Ich brauche sie es zeigen 1,2,3,4,5, etc anstelle von 1,10,11,12,13 usw.

Was soll ich verwenden, um dies zu beheben?

+2

Sie speichern als Zeichenfolgen so, was Sie sehen, ist die richtige Reihenfolge. Sie müssten numerisches Feld und Reihenfolge haben. –

+0

Können Sie bitte Ihren Java-Code posten? – GGWP

+0

Dies kann leicht mit einer For-Anweisung erreicht werden. – GGWP

Antwort

0

Wie John kommentierte, wird die Reihenfolge erwartet: Da Sie Strings speichern, werden die Knoten lexikografisch geordnet.

Wenn Sie numerisch bestellen möchten, müssen Sie entweder die Werte als Zahl speichern oder (in Ihrem Fall eher) den Wert in einem Format speichern, das lexikografisch wie numerisch sortiert ist. Z.B.

  • 01 Shop
  • 02 Shop
  • 10 Shop
  • 11 Shop
  • 19 Shop
  • 20 Shop
  • 21 speichern
  • 22 speichern

Oder

  • 001 Shop
  • 002 Shop
  • 010 Shop
  • 011 Shop
  • 019 Shop
  • 020 Shop
  • 021 Shop
  • 022 Shop

Dieses Auffüllen/Voranstellen von Strings ist in Situationen wie diesen ziemlich normal.Einer der Hauptnachteile besteht darin, dass Sie festlegen müssen, wie viele Zeichen für die Zahlen beim Starten des Projekts verwendet werden sollen.

+0

Danke. Ich habe nicht darüber nachgedacht, die Nullen hinzuzufügen –

1

Die führenden Nullen können eine temporäre Lösung sein, aber im Hinblick auf die Benutzererfahrung ist das falsch. Sie müssen eine Sortierfunktion implementieren. Wenn Ihr System mehr als 999 Geschäfte verwalten muss, müssen Sie Ihren Code dafür nicht mehr berühren.

Verwandte Themen