Ember-数据一对多的关系

时间:2014-10-15 05:45:59

标签: ember.js

所以我有这些模型

    App.Order= DS.Model.extend({
      items: DS.hasMany('item')
    });


    App.item=DS.Model.extend({
       order: DS.belongsTo('order')
    });

我的问题是,我应该把财产数量放在哪里?我确定以下代码不正确,因为两个订单可能有不同数量的类似项目,但我无法想到任何可能的解决方案。

    App.Order= DS.Model.extend({
      items: DS.hasMany('item')
    });


    App.item=DS.Model.extend({
      order: DS.belongsTo('order'),
      quantity: DS.attr('number')
    });

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

从关系的角度来看,你的案例实际上是多对多的":

  • 订单包含一个或多个商品
  • 每件商品可能会多次购买

在您的数据库中,数量可能属于" Order_Item"等表格。您将在其中找到订单ID和商品ID(复合唯一约束)。

由于您需要将数据(数量至少)存在于该表中,您可能希望使用表示它的Ember模型(让我们说OrderItem或OrderRow)。由于您的表将拥有自己的主键,因此您可以使用经典"一对多"设计您的休息API。关系:

  • /orders/orders/:id
  • /items/items/:id
  • /order_items?order_id=:order_id/order_items/:id

你的模特如:

  • 订单包含许多order_item
  • 并且可以在许多order_items中找到项目
  • order_item属于一个订单和一个商品

有用的链接:http://www.toptal.com/emberjs/a-thorough-guide-to-ember-data#one-to-many-and-many-to-one-relationships

答案 1 :(得分:0)

Pedrocheckos的回答是正确的。这真的很有帮助。

我带它与我的后端团队讨论,我们同意有两个单独的项目模型。而不是有多对多的关系模型。

1项目模型仅用于显示目的,没有数量属性

和其他项目模型是订单模型的属性,它将具有数量。

相关问题