2016-04-07 9 views
6

Ich möchte eine Liste von Elementen mit AsyncStorage speichern. Die Liste wird im Laufe der Zeit aktualisiert.Speichern einer Liste mit React Native AsyncStorage: viele Schlüssel oder einer?

Hier ein Beispiel für einen Zustand ist die Liste in sein kann:

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

Nun scheint es, dass es zwei Möglichkeiten, diese Liste zu speichern:

  1. Shop jeden Kontakt unter seinem eigenen Schlüssel
  2. Speichern Sie die ganze Liste unter einem Schlüssel

Es gibt Vorteile entweder ein pproach - Was ist in React Native bevorzugt?

+3

Betrachten wir eine Datenbank-Bibliothek wie [Bereich] (https://realm.io/docs/react-native/latest/). Es hat viele Vorteile gegenüber AsyncStorage für Daten, die komplexer sind als Schlüssel/Wert. – David

Antwort

4

Ich denke, das hängt davon ab, wie Sie die Daten verwenden, auf sie zugreifen und sie aktualisieren möchten. Es gibt mehrere asyncstorage-Methoden, mit denen Sie beide Fälle vereinfachen können.

Wenn Sie sich für die Route mit vielen Schlüsseln entscheiden, werfen Sie einen Blick auf multiSet und multiGet, mit dem Sie mehrere Schlüssel in einem einzigen Funktionsaufruf abrufen können. Und getAllKeys wird Ihnen die Mühe ersparen, "die Spur aller von Ihnen erstellten Schlüssel zu behalten", wodurch beide von Fredrick Motte erwähnten Probleme gelöst werden.

Für die Aktualisierung vieler Schlüssel in einem Anruf, überprüfen Sie multiMerge, die eine sehr leistungsfähige Methode ist, ähnlich wie mergeItem aber mehrere Schlüssel gleichzeitig.

Also, Sie sehen, Sie können wirklich beide Routen gehen. Wenn Sie Ihre Daten in mehrere Schlüssel aufteilen, werden Sie wahrscheinlich nur einige Zeit damit verbringen wollen, sich mit den oben erwähnten Methoden vertraut zu machen.

Und Davids Vorschlag, Relm einen Blick zu geben, könnte auch einen Wert für Sie haben, wieder ... je nach Ihren Bedürfnissen.

3

Für die Benutzerfreundlichkeit würde ich die Liste als Ganzes speichern; Seitdem müssen Sie nicht mehr alle Schlüssel, die Sie für jeden Kontakt erstellt haben, im Auge behalten. und das Laden/Speichern wird einfacher (nur ein Funktionsanruf, statt alle Kontakte zu durchlaufen).

Aber das ist meist eine persönliche Vorliebe; Für keine der beiden Methoden gibt es echte Einschränkungen.

1

Ich würde zu den zwei guten Antworten von Chris und Frederick hinzufügen: es hängt von der Größe Ihrer Liste und der Größe Ihrer Dokumente ab.

Das Gehen mit einer Liste als Ganzes ist viel einfacher zu verwalten, skaliert aber nicht (die Berechnung wird mit der Größe Ihres globalen Werts schwerer). mit einem Schlüssel pro Element zu gehen fügt einige Komplexität aber Skalen hinzu.

Persönlich habe ich mit allem in einem Schlüssel angefangen, und jetzt refactoring, um ein Dokument pro Schlüssel zu haben, weil, wenn ich hunderte von großen Dokumenten verarbeite, Leistungen erheblich verschlechtern.

Und wenn Sie mit tausenden oder zehntausenden von Elementen umgehen, sollten Sie nach einer geeigneten Datenbank wie sqlite oder realm suchen (aber das Debuggen ist ein Problem im Realm).

Würde mich interessieren, die wahren Grenzen der asyncStorage zu wissen, ich irgendwo gelesen, es war nur ein paar Megabyte, wenn Sie in Ihrer Mutter Config bitten, es zu erhöhen

Verwandte Themen