【问题标题】:HasMany relationships between sideloaded models侧载模型之间的 HasMany 关系
【发布时间】:2013-09-17 02:38:47
【问题描述】:

这是我的 Ember-Data 模型:

Lrt.Option = DS.Model.extend({
    option_relation_value:  hasMany('option')
});

这是 JSON 的一个示例:(为了这个问题而缩短)

{
    "optionGroups": [], 
    "optionSubGroups": [
        {
            "id": "3",  
            "optionType": [
                "80", 
                "81", 
                "82", 
                "83", 
                "84", 
                "248", 
                "278"
            ],
            "title": "Option Group for 80"
        }
    ], 
    "options": [
        {
            "id": "45", 
            "option_relation_value": [
                "80"
            ]
        },
        {
            "id": "80",
            "option_relation_value": []
        }
    ]
}

还有“OptionGroup”和“OptionSubGroup”模型,它们是侧载选项。

我遇到的问题是,在将“hasMany”添加到模型中后,我无法再在商店中查询这样的选项:

this.get('store').find('option')

它只是返回“0”,但是在 Ember Inspector 中,我得到了 400 多个条目,所以我知道加载的数据。

当使用 chrome 检查器并在 ALL Exceptions 上中断时,它会在 Ember-Data 的第 2246 行的以下行中断:

2246: Ember.assert('The id ' + id + ' has already been used with another record of type ' + type.toString() + '.', !id || !idToRecord[id]);

错误是:

"Cannot call method 'toString' of undefined"

这一行中的“type”是'undefined'。

我在这种 hasMany 关系中做错了什么?

我正在使用 Ember-Data 1.0 Beta 2。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    从技术上讲,这不是侧面加载,它更像是嵌套加载。这可能与它有关。

    对于真正的侧面加载,您需要这样的结构作为您的外部 SON 响应:

    {
      "option" : {
        "id" : 3,
        ...
        "options" : [45,80]
      }
      "options" : [
        { "id":45 , ... },
        { "id":80 , ... }
      ]
    }
    

    以下是有关 JSON 约定的文档:http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_json-conventions comments 是侧加载的示例。

    我知道这适用于单独的模型结构(post -> comment),但我不确定自引用树类型结构。

    【讨论】:

    • 我在来自服务器的相关数据结构中出现错误。我有一组 pojos 而不是 ids。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多