【问题标题】:how to define new mappings for Ember to avoid the no mapping error如何为 Ember 定义新的映射以避免无映射错误
【发布时间】:2013-08-05 07:10:41
【问题描述】:

我的用户 JSON 返回结果如下:

{
    users: [{...}]
    some_other_data: {}
    some_other_data2 [{...}]
}

如果我从 JSON 结果中删除其他键 - 那么它会正常工作,但我确实需要将这些额外的其他“键”包含在 JSON 结果中。

我试图从这里的答案中应用解决方案 - return single record with ember-data find() and multiple params

但是改变我的代码

App.Store = DS.Store.extend
    revision: 12
    adapter: 'DS.RESTAdapter'

类似于上面的解决方案只是弄乱了我的 ember 应用程序请求的路径。

【问题讨论】:

    标签: ember.js mapping


    【解决方案1】:

    ember-data 中的 JSON 响应不支持额外属性。

    唯一受支持的“额外”属性是 metasince,例如:

    {
      meta: {}
      since: {}
      users: [{...}]
    }
    

    这些额外的属性稍后可以通过挂钩到序列化程序的extractMeta 函数来提取,如下所示:

    App.CustomRESTSerializer = DS.RESTSerializer.extend({
      extractMeta: function(loader, type, json) {
        var meta, since;
        meta = json[this.configOption(type, 'meta')];
        since = json[this.configOption(type, 'since')];
        if (!meta || !since) { return; }
        Ember.set('App.metaDataForLastRequest', meta);
        Ember.set('App.sinceForLastRequest', since);
        this._super(loader, type, json);
      }
    });
    
    App.Store = DS.Store.extend({
      adapter: DS.RESTAdapter.create({
        serializer: App.CustomRESTSerializer
      })
    });
    

    IMO,如果可以的话,您应该更改从后端返回的 JSON,并通过定义一个额外的模型来检索额外的数据,并将其绑定到您的 User 模型,关系类似于 hasManybelongsTo 以使一切正常。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2019-12-07
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 2013-04-03
      • 2021-05-07
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多