【问题标题】:Realm Query in React Native Returns Realm Object Instead of Class InstanceReact Native 中的领域查询返回领域对象而不是类实例
【发布时间】:2016-07-19 21:35:13
【问题描述】:

我有一个这样的模型,能够将详细信息字段存储为 JSON

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 }
  }
};

当我这样做的时候

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);
});

它将注销一个 RealmObject 的实例,其中包含 _details 的 getter 和 setter,但 details 没有,所以它不是 Person 的实例,我在这里遗漏了什么吗?

我也尝试了class Person extends Realm.Object { ... },但没有任何改变。我阅读了documentation 并认为它应该以这种方式工作,我希望它可以正常工作,否则我将不得不更改很多代码。

更新

通过做临时修复(黑客)它

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

有更好的建议吗?

【问题讨论】:

    标签: javascript react-native ecmascript-6 realm


    【解决方案1】:

    你能分享你初始化你的领域的代码吗?您需要传递对象构造函数而不是模式数组中的字符串才能取回对象。因此,如果您将领域初始化为

    var realm = new Realm({schema: [Person]})
    

    那么理论上一切都应该如你所愿。

    【讨论】:

    • import Person from './models/Person'; const realm = new Realm({ schema: [ Person ], schemaVersion: 1 });
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2017-01-03
    相关资源
    最近更新 更多