我想在父类型的Ember Data模型上定义多个hasMany关系,但我不知道如何为此指定反转:
Profile = DS.Model.extend
# ...
friends: DS.hasMany 'profile', async: true
observed: DS.hasMany 'profile', async: true
observers: DS.hasMany 'profile', async: true
我很容易在数据库中处理这些属性,但是Ember Data不支持这一点。是否可以在不创建其他模型的情况下定义此3 hasMany关系(例如,Friend,Observer)。
我得到的错误:
错误:断言失败:您定义了“朋友”关系 app @ model:profile:,但多个可能的反向关系 输入app @ model:profile:在app @ model上找到:个人资料:看 在 http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses 如何明确指定反转
答案 0 :(得分:1)
Ember Data希望在belongsTo端有一个外键,以便它可以为您提供任意方向的模型。 Ember Data不直接支持许多关系,因此需要第二个连接模型。
这几乎与您在SQL数据库中建模数据的方式一致。
我不喜欢Ember Data的一个原因是它需要在hasMany方面以及belongsTo方面的id。当您具有高基数关系时,这不是一个很好的方法,因为当基于外键的简单查找更有效时,这意味着大的有效负载和低效查询。它也给人一种幻觉,你可以避免使用第二个模型,你的Profile模型可能只有每个关系的id数组,但它目前还没有那样工作。
答案 1 :(得分:0)
现在有效:
Profile = DS.Model.extend
# ...
friends: DS.hasMany 'profile', async: true
observed: DS.hasMany 'observer', async: true, inverse: 'observer'
observers: DS.hasMany 'observer', async: true, inverse: 'observed'
Observer = DS.Model.extend
observer: DS.belongsTo 'profile', async: true
observed: DS.belongsTo 'profile', async: true
然而,如果没有定义另一个模型,我仍然有兴趣做到这一点。