2016-07-14 7 views
1

Hallo Ich erstellen eine Wörterbuch-App in React Native und ich möchte einfach ein Array von JSON Blobs, die die Definitionen der einzelnen Wörter enthalten würde.Speichern von statischen und allgemeinen Daten in React Native

Ich würde sehr gerne vermeiden, die Daten fest codieren zu müssen und möchte, dass mein Code DRY ist!

Beispiel JSON Blob:

[ 
    { 
    "word": "triangle", 
    "definition": "a plane figure with three straight sides and three angles.", 
    "type": "noun" 
    }, 
    { 
    "word": "square", 
    "definition": "a plane figure with four equal straight sides and four right angles.", 
    "type": "noun" 
    }, 
    { 
    "word": "circle", 
    "definition": "a round plane figure whose boundary (the circumference) consists of points equidistant from a fixed point (the center).", 
    "type": "noun" 
    } 
] 

Was ist die beste Strategie ist, diese Daten zu speichern, so dass es ist:

  1. Kann vom
  2. reinigen und einfach zu ändern Benutzer vorgemerkt werden und von anderen Dateien getrennt
  3. Wie kann es von meinen React-Komponenten
zugegriffen werden

Ich denke relationale Datenbanken sind der beste Ansatz, aber ich habe Schwierigkeiten herauszufinden, wie ich die Datenbank mit Daten säen würde. Und welche Bibliothek auf React Native für eine Relation-Datenbank verwenden.

Vielen Dank für das Lesen meiner Frage.

Antwort

1

können Sie tun, was Sie beschreiben Realm mit dem folgenden Schema:

let EntrySchema = { 
    name: 'Entry', 
    primaryKey: 'word', 
    properties: { 
     word: 'string', 
     definition: 'string', 
     type: 'string' 
    } 
}; 
let BookmarkListsSchema = { 
    name: 'BookmarkList', 
    properties: { 
     bookmarks: {type: 'list', objectType: 'Entry'} 
    } 
}; 

let realm = new Realm({schema: [EntrySchema, BookmarkListsSchema]}); 

Sie können eine Realm-Datei mit allen Ihren Wörterbucheinträge vorab füllen und es mit Ihrer App bündeln, oder alternativ könnten Sie lade diese Datei oder JSON herunter und initialisiere deine db beim Starten der App.

So erstellen/Lesezeichen hinzufügen:

// create your list once 
var bookmarkList; 
realm.write(() => { 
    bookmarkList = realm.create('BookmarkList'); 
}); 

// add entry for 'triange' to bookmarks 
realm.write(() => { 
    let triangeEntry = realm.objectForPrimaryKey('Entry', 'triangle'); 
    bookmarkList.bookmarks.push(triangleEntry); 
}); 
+0

Dank Ari. Kann ich eine Realm-Datei mit einem normalen js-Skript auffüllen? Zum Beispiel würde ich die Realm-Bibliothek in einer JS-Datei benötigen und wenn ich das einmal ausführe, würde es eine Realm-Datei ausgeben? –

+1

Wenn Sie auf dem Simulator laufen, können Sie die Datei in Ihrer RN-App vorbereiten und die Datei einfach kopieren. Sie können den Pfad zur generierten Realm-Datei herausfinden mit: 'console.log (realm.path)' – Ari

+0

Oh süß! Danke noch einmal! –