它似乎這個Google API不支持按名稱排序,這意味着分頁成爲一個挑戰。
如果我被困在此,我可能會搶了完整的聯繫人列表,並持續在其兩邊
(一)磁盤文件,或
(B)的Memcached或Redis的,或
(C)一個數據庫表。
當然,當持久化對象時,還會出現其他問題,主要是爲您的代碼定義好的參數,以便知道何時重新同步列表或者簡單地將其丟棄。
如果你選擇(c),那麼你的排序和分頁可以用典型的方法完成。
但是,如果您選擇(a)或(b),那麼您可以在保存列表時進行排序。
Ruby可以輕鬆地對載入內存的數組進行排序。如果它是一個龐大的陣列,您甚至可以對其進行排序以避免重複。我不確定你的response
對象是什麼樣的,但這裏有一些代碼假設它是一個包含name
屬性的對象數組。
my_objects = response # ...or whatever extracts the array of objects
# Modifies array in place...
my_objects.sort! { |a, b| a.name <=> b.name }
# To sort descending...
my_objects.sort! { |a, b| b.name <=> a.name }
# To sort by zip first (assuming a `zip` attr) then by `name`...
my_objects.sort! { |a, b| 2 * (a.zip <=> b.zip) + (a.name <=> b.name) }
# To sort by zip first (assuming a `zip` attr) then by `name` DESCENDING...
my_objects.sort! { |a, b| 2 * (a.zip <=> b.zip) + (b.name <=> a.name) }
這是因爲正負號或飛船操作,<=>
的所有作品。您可以瞭解更多有關在這裏:
What is the Ruby <=> (spaceship) operator?
https://en.wikipedia.org/wiki/Sign_function
@liole如果用戶有4000個聯繫人,我必須在我身邊處理,那麼這需要時間,我正在尋找谷歌的支持來解決這個問題 –
'sort_by!(&:name)'會比較習慣於上行排序 – engineersmnky
我已經在ROR一側使用sort_by實現了這一點,但是我正在尋找更好的方法........現在,我得到數以千計的聯繫人並將其排序在我的末端並顯示.....現在我想要分頁但是每次我必須一次又一次讀取這些數千條記錄然後發送分頁記錄 –