2016-04-07 18 views
6

Chcę przechowywać listę pozycji z AsyncStorage. Lista będzie aktualizowana w czasie.Przechowywanie listy z React Native AsyncStorage: wiele kluczy lub jeden?

Oto przykład stanu lista może być w:

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

Teraz wydaje się, że istnieją dwie opcje do przechowywania tej listy:

  1. Store każdy kontakt pod własnym kluczowym
  2. Store cała lista pod jeden klucz

Istnieją zalety albo pproach - co jest preferowane w React Native?

+3

rozważyć przy użyciu biblioteki bazy danych jak [Realm] (https://realm.io/docs/react-native/latest/). Ma wiele zalet w porównaniu z AsyncStorage dla danych bardziej złożonych niż klucz/wartość. – David

Odpowiedz

4

Myślę, że zależy to od tego, w jaki sposób planujesz używać, uzyskiwać dostęp i aktualizować dane. Istnieje kilka metod asyncstorage, których możesz użyć, aby ułatwić sobie sprawę.

Jeśli zdecydujesz się na trasę wieloma klawiszami, zajrzyj na stronę multiSet i multiGet, która pozwala pobrać kilka klawiszy w jednym wywołaniu funkcji. I getAllKeys uratuje ci problem "śledzenia wszystkich kluczy, które stworzyłeś", rozwiązując oba problemy wymienione przez Fredrick Motte.

Aby zaktualizować wiele kluczy podczas jednego połączenia, sprawdź, multiMerge, która jest naprawdę potężną metodą, podobną do mergeItem, ale wieloma kluczami naraz.

Widzisz więc, że naprawdę możesz wybrać jedną z tras. Jeśli podzielisz dane na kilka kluczy, prawdopodobnie będziesz chciał po prostu poświęcić trochę czasu na zapoznanie się z metodami, o których wspomniałem powyżej.

Sugestia Davida, by rzucić Spojrzenie, może mieć dla ciebie także wartość, znowu ... w zależności od twoich potrzeb.

3

Dla łatwości użycia będę przechowywać listę jako całość; od tego czasu nie musisz śledzić wszystkich kluczy utworzonych osobno dla każdego kontaktu; i ładowanie/zapisywanie ich będzie łatwiejsze (tylko jedno wywołanie funkcji zamiast pętli nad wszystkimi kontaktami).

Ale to głównie osobiste preferencje; nie ma żadnych rzeczywistych ograniczeń dla żadnej z tych dwóch metod.

1

Chciałbym dodać do dwóch dobrych odpowiedzi od Chrisa i Fredericka: to zależy od wielkości twojej listy i rozmiaru twoich dokumentów.

Przechodzenie z jedną listą jako całością jest łatwiejsze w zarządzaniu, ale nie skaluje się (obliczenia będą coraz większe wraz z rozmiarem wartości globalnej). przechodzenie z jednym kluczem za przedmiot zwiększa złożoność, ale skaluje.

Osobiście zacząłem od wszystkiego w jednym kluczu, a teraz dokonuję refaktoryzacji, aby mieć jeden dokument na klucz, ponieważ kiedy przetwarzam setki dużych dokumentów, występy wyraźnie się pogarszają.

Jeśli zajmujesz się tysiącami lub dziesiątkami tysięcy elementów, myślę, że powinieneś wybrać odpowiednią bazę danych, taką jak sqlite lub realm (ale debugowanie w tej chwili jest problemem w rzeczywistości).

byłby zainteresowany, aby poznać prawdziwe granice asyncStorage, czytałem gdzieś, że było kilka megabajtów chyba zapytać w swoim ojczystym config, aby ją zwiększyć