2017-06-26 30 views
1

因此,我有一個商店數據庫,每個商店的名稱前都有一個數字。它們是以隨機順序添加的,但我希望它們按從1到213的順序顯示。我的問題是當我使用orderbyvalue()時,它顯示它們。firebase數據庫按價值排序工作錯誤

  • 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等。

我應該用什麼來解決這個問題?

+2

您正在存儲爲字符串,因此您所看到的是正確的順序。你需要有數字字段並按順序排列。 –

+0

你可以請你發佈你的java代碼。 – GGWP

+0

這可以通過使用for語句輕鬆實現。 – GGWP

回答

0

正如約翰所評論的那樣,您得到的順序是預期的:由於您正在存儲字符串,所以節點按照字典順序排列。

如果要以數字順序排序,則必須將值存儲爲數字或(以您的情況更可能)將值存儲爲格式,該格式按照字母順序排序和數字排序相同。例如。

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

或者

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

在這種情況下,字符串的填充/前綴很正常。其中一個主要缺點是,您必須確定在開始項目時需要多少個字符才能用於數字。

+0

謝謝。沒有考慮添加零 –

1

前導零可能是一個臨時解決方案,但就用戶體驗而言,這是錯誤的。你必須實現一個排序功能。此外,如果您的系統必須處理超過999個商店,則不必爲此觸摸您的代碼。