2016-07-19 9 views
0

Ich habe ein Modell wie diese, in der Lage sein Feld speichern Details wie JSONRealm Abfrage in React india Returns Realm-Objekt anstelle Klasse Instanz

class Person { 
    set details(data) { this._details = data ? JSON.stringify(data) : null; } 
    get details() { return this._details ? JSON.parse(this._details) : null; } 
} 

Person.schema = { 
    name: 'Person', 
    primaryKey: 'id', 
    properties: { 
    id: 'string', 
    name: 'string', 
    _details: { type: 'string', optional: true } 
    } 
}; 

Wenn ich jetzt

realm.write(() => { 
    // this is a write block for some other objects, 
    // but at some point I need to find a person 
    let person = realm.objectForPrimaryKey('Person', id); 
    console.log(person); 
}); 

Es tue wird eine Instanz von RealmObject mit Gettern und Setter für _details abmelden, aber nichts für details, also ist es keine Instanz von Person, fehle ich hier etwas?

Ich versuchte auch class Person extends Realm.Object { ... }, aber nichts änderte. Ich lese die documentation und nahm an, dass es so funktionieren sollte, und ich hoffe, dass es sonst viel Code ändern muss.

UPDATE

vorübergehend fixiert (gehackt) durch

let _person = realm.objectForPrimaryKey('Person', id); 
if (_person) { 
    let person = new Person(); 
    _.assign(person, _person); 
} 

Irgendwelche bessere Vorschläge machen?

Antwort

0

Können Sie den Code teilen, in dem Sie Ihr Reich initialisieren? Sie müssen Ihren Objektkonstruktor anstelle einer Zeichenfolge im Schema-Array übergeben, um Ihre Objekte zurückzubekommen. Also, wenn Sie Ihr Reich als

initialisieren, dann sollte in der Theorie alles so funktionieren, wie Sie erwarten.

+0

'importieren Person aus './models/Person'; const realm = neuer Realm ({schema: [Person], schemaVersion: 1}); ' –