2016-04-07 40 views
6

我想用AsyncStorage存儲項目列表。該清單將隨着時間的推移而更新。使用React Native AsyncStorage存儲列表:許多密鑰還是一個?

這裏是一個狀態的一個例子列表可以在:

[ 
    { 
    name: "Alice", 
    email: "[email protected]" 
    }, 
    { 
    name: "Bob", 
    email: "[email protected]", 
    address: "30 Madison Ave., NY" 
    } 
] 

現在,似乎有用於存儲該列表中有兩個選項:

  1. 存儲在自己的每個接觸關鍵
  2. 商店下一個關鍵

有到任何一個好處整個列表pproach - React Native中的首選項是什麼?

+3

考慮使用數據庫的庫如[境界](HTTPS:/ /realm.io/docs/react-native/latest/)。對於比鍵/值更復雜的數據,它比AsyncStorage具有許多優點。 – David

回答

4

我認爲這取決於您打算如何使用,訪問和更新數據。有幾種asyncstorage方法可用於幫助簡化這兩種情況。

如果您決定走多條按鍵路線,請查看multiSetmultiGet,它允許您在單個函數調用中檢索多個按鍵。並且getAllKeys將爲您節省「跟蹤您創建的所有密鑰」的麻煩,解決Fredrick Motte提到的兩個問題。

要更新一個通話中的很多按鍵,請查看multiMerge這是一個非常強大的方法,類似於mergeItem,但是同時有多個按鍵。

所以,你看到你真的可以去任一條路線。如果您將數據分成多個鍵,那麼您可能只想花一些時間熟悉上面提到的方法。

大衛給Relm一個表情的建議可能對你也有一些價值,同樣...取決於你的需要。

3

爲了便於使用,我將整個列表存儲;此後您不必跟蹤您爲每個聯繫人單獨創建的所有鍵;並加載/保存它們會更容易(只需一個函數調用,而不是循環遍歷所有聯繫人)。

但這主要是個人偏好;這兩種方法都沒有真正的限制。

1

我想補充一下克里斯和弗雷德裏克的兩個很好的答案: 這取決於你的列表大小和文檔的大小。

將整個列表作爲一個整體進行管理會更容易,但不會擴展(計算會隨着您的全局值的大小而變得更重)。 每個項目使用一個鍵會增加一些複雜性,但會縮放。我個人從一開始就把所有東西都放在一個鍵上,現在每個鍵都重構一個文檔,因爲當我處理數百個大文檔時,性能顯然會降低。

如果你正在處理成千上萬的元素,我認爲你應該去一個合適的數據庫,如sqlite或realm(但現在的調試是一個問題)。

很想知道asyncStorage的真實限制,我讀的地方,這是一個幾百兆,除非您在本機的配置要求,以增加其

相關問題