【问题标题】:Multiple hasMany relationships of the same type on a model一个模型上有多个相同类型的hasMany关系
【发布时间】:2016-04-09 03:46:31
【问题描述】:

我正在使用一个具有多个相同类型的 hasMany 关系但属性名称不同的类。例如:

export default DS.Model.extend({
  sunday: DS.hasMany('scheduled-time'),
  monday: DS.hasMany('scheduled-time'),
  tuesday: DS.hasMany('scheduled-time'),
  wednesday: DS.hasMany('scheduled-time'),
  thursday: DS.hasMany('scheduled-time'),
  friday: DS.hasMany('scheduled-time'),
  saturday: DS.hasMany('scheduled-time'),
  ...

这可能表示类似“周一,员工 X 计划在上午 9 点到下午 12 点(一个 scheduled-time 实例)工作,然后从下午 1 点到下午 5 点(另一个 scheduled-time 实例)工作。”对于一周中的每一天,员工可以有零个、一个或多个预定时间。

关系的另一端可能如下所示:

export default DS.Model.extend({
  start_time: DS.attr('string'),
  end_time: DS.attr('string'),
  schedule: DS.belongsTo('schedule'),
  ...

但是,Ember 数据似乎不允许这样做,并说我需要明确说明 belongsTo 的倒数(详见此处:https://guides.emberjs.com/v2.4.0/models/relationships/)。这就是我认为我的数据模型被破坏的地方:我想不出任何合乎逻辑的方式来说给定的预定时间属于一周中的任何给定的日子。这个数据模型坏了吗?我有一种感觉,与其将所有 scheduled-times 组织在一周中的个别日子下,不如将它们真正归为一个属性下,也许一周中的日子将是计算属性,而不是进行一些过滤。

这种类型的关系是否可能,或者我应该进行一些重构?

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    shiftscheduled-time,员工可以hasMany shiftsshift A 是星期天,shift B 也是星期天,但 shift C 是星期二这一事实并没有什么不同。

    // models/employee.js
    export default DS.Model.extend({
      shifts: DS.hasMany('scheduled-time')
    });
    

    【讨论】:

    • 对,这就是我最后所说的,将所有scheduled-times 组织在一个属性下,而不是按星期几的属性下。看来这将是要走的路。
    猜你喜欢
    • 2015-02-26
    • 2015-09-20
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多