ember-data:父母/子女之间的关系

时间:2015-05-21 16:14:33

标签: ember.js ember-data

我在定义模型之间的关系时遇到问题,以获得级联属性。 我希望在删除Trail或删除Draw时删除MapLineString。但是当MapDraw或MapLineString被删除时,我不希望删除Trail。

模型之间的关系是:

  

Trail可以有一个预告片,一个团队和一个mapDraw

     

MapDraw可以有很多MapLineString

     

MapLineString可以属于Trail AND / OR MapDraw

Trail = DS.Model.extend({
  Trailer: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}),
  Team: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}),
  mapDraw: DS.belongsTo('mapDraw', {async: true}),
});

MapDraw = DS.Model.extend({
  lineStrings: DS.hasMany('mapLinestring', {async: true}),
  trail: DS.belongsTo('mtgTrail')
});

MapLineString = DS.Model.extend({
  trail: DS.belongsTo('mtgTrail'),
  mapDraw: DS.belongsTo('mapDraw'),
});
  

断言失败:您定义了“跟踪”关系   mantrailling @ model:map-linestring:,但你定义了逆   类型mantrailling @ model:mtg-trail的关系:多次。   看着   http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses   如何明确指定反转

2 个答案:

答案 0 :(得分:0)

看看你在帖子开头写的内容听起来像是  A应该是:

export default DS.Model.extend({
  bees: DS.hasMany('B', {async: true, inverse: 'abees'}),
  cees: DS.hasMany('C', {async: true}),  //doesnt need an inverse as you are getting all the ones that belong to A
});    

B应该是:

export default DS.Model.extend({
  cees: DS.hasMany('C', {async: true, inverse: 'bcees'}),
  abees: DS.belongsTo('A')
});    

然后在C中你有两个名为同一个东西的模型属性

export default DS.Model.extend({
  acees: DS.belongsTo('A'),
  bcess: DS.belongsTo('B')
});    

您的命名约定也令人困惑。为什么不将模型的名称命名为与它们所代表的相关的东西呢?

答案 1 :(得分:0)

好的,我发现了问题所在。 我一直在使用Localstorage适配器,它不适用于{async:true}。 这些记录并没有保留在父母方面。