Emberjs多对一的单向关系

时间:2013-03-06 20:24:49

标签: model ember.js relationship ember-data

Emberjs是否支持单向关系?考虑一下我想用三种模型存储有关食谱的信息:

  • Ingredient
    • 永远存在。提供namedescription
    • 没有什么“拥有”一种成分,也不应该在新的参考文献中重复,或在参考文献被销毁时销毁。他们只是
  • IngredientAddition
    • 由一个Ingredient和添加成分的时间/数量和数量组成的信息
    • 许多IngredientAddition个对象可以使用相同的成分。
  • Recipe
    • 包含许多IngredientAddition个对象和辅助信息。

据我所知,我的模型如下所示:

App.Ingredient = DS.Model.extend({
  name: DS.attr('string'),
  desc: DS.attr('string'),
});
App.IngredientAddition = DS.Model.extend({
  how:  DS.attr('string'),
  qty:  DS.attr('string'),
  recipe: DS.belongsTo('App.Recipe'),
});
App.Recipe = DS.Model.extend({
  desc: DS.attr('string'),
  ingredients: DS.hasMany('App.IngredientAddition'),
});

但是,这并未捕获IngredientAdditionIngredient之间的关系。 DS.hasMany似乎不合适,因为每个IngredientAddition只有一个IngredientDS.belongsTo不合适,因为Ingredient生命周期不是由IngredientAddition的存在(或缺乏)决定的。

如何捕获此信息?我查看了ember-data来源,除了hasManybelongsTo之外,我找不到任何关系类型。

1 个答案:

答案 0 :(得分:0)

我认为您希望在belongsTo上建立IngredientAddition关系。

App.IngredientAddition = DS.Model.extend({
  how:  DS.attr('string'),
  qty:  DS.attr('string'),
  ingredient: DS.belongsTo('App.Ingredient'),
  recipe: DS.belongsTo('App.Recipe'),
});

这样,IngredientAddition有一个基础ingredient_id,指向相关的IngredientIngredient“拥有”一个IngredientAddition的语义很奇怪,但这是产生你所描述的关系的方法。