我在定义模型之间的关系时遇到问题,以获得级联属性。 我希望在删除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 如何明确指定反转
答案 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}。 这些记录并没有保留在父母方面。