Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model 多对一单向关系_Model_Ember.js_Relationship_Ember Data - Fatal编程技术网

Model 多对一单向关系

Model 多对一单向关系,model,ember.js,relationship,ember-data,Model,Ember.js,Relationship,Ember Data,Emberjs是否支持单向关系?考虑到我想用三个模型存储关于配方的信息: 成分 永远存在。给出名称和说明 没有任何东西“拥有”成分,也不应该在新引用时复制它们,或者在引用被销毁时销毁它们。他们只是是 ingredenticationaddition 包括一种成分以及何时/何人添加成分和数量的信息 许多ingredenticationaddition对象可以使用相同的成分 配方 由多个ingredenticationaddition对象和辅助信息组成 据我所知,我的模型如下所示:

Emberjs是否支持单向关系?考虑到我想用三个模型存储关于配方的信息:

  • 成分
    • 永远存在。给出
      名称
      说明
    • 没有任何东西“拥有”成分,也不应该在新引用时复制它们,或者在引用被销毁时销毁它们。他们只是是
  • ingredenticationaddition
    • 包括一种
      成分
      以及何时/何人添加成分和数量的信息
    • 许多
      ingredenticationaddition
      对象可以使用相同的成分
  • 配方
    • 由多个
      ingredenticationaddition
      对象和辅助信息组成
据我所知,我的模型如下所示:

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'),
});
但是,这并没有捕捉到配料添加和配料之间的关系
DS.hasMany
似乎不合适,因为每个InGedentialAddition都只有一种
成分<代码>DS.belongsTo
不合适,因为
成分
生命周期不是由
成分添加的存在(或缺乏)决定的

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

如何获取这些信息?我已经查看了
余烬数据
源,除了
有许多
属于
之外,我找不到任何关系类型,我想您需要
属于
基础添加
上的关系

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

这样,
ingredenticationaddition
就有了一个指向相关
成分的底层
成分id
成分
“拥有”一个
IngredentAddition
的语义很奇怪,但这是产生您所描述的关系的方式。

从Ember如何管理引用来看,
IngredentAddition
对象似乎不会在
成分
更改时更新。绑定看起来像是单向的。