我有这样的模型,能够将详细信息字段存储为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);
});
它将使用_details
的getter和setter注销一个RealmObject实例,但details
没有注释,所以它不是Person的实例,我在这里遗漏了什么吗?
我也试过class Person extends Realm.Object { ... }
但没有改变。我读了documentation并假设它应该以这种方式工作,我希望它能做到这一点,否则我将不得不改变很多代码。
更新
暂时修复(黑客入侵)
let _person = realm.objectForPrimaryKey('Person', id);
if (_person) {
let person = new Person();
_.assign(person, _person);
}
有更好的建议吗?
答案 0 :(得分:0)
您可以共享初始化Realm的代码吗?您需要传递对象构造函数而不是架构数组中的字符串才能恢复对象。所以如果你正在初始化你的领域
var realm = new Realm({schema: [Person]})
然后理论上一切都应该如你所愿。