【问题标题】:Ember-data one to many relationshipEmber-data 一对多关系
【发布时间】:2014-12-10 02:26:32
【问题描述】:

所以我有这些模型

    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')
    });

感谢您的帮助。

【问题讨论】:

    标签: ember.js


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      我把它拿来和我的后端团队讨论,我们同意有 2 个独立的项目模型。而不是多对多关系模型。

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

      另外一个item model是order model的属性,会有数量。

      【讨论】:

        猜你喜欢
        • 2013-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多