【问题标题】:(Ember.js) How to save Sideloaded data from ajax call?(Ember.js) 如何从 ajax 调用中保存 Sideloaded 数据?
【发布时间】:2018-05-17 16:26:05
【问题描述】:

美好的一天!

只是想问一下如何为 ajax 调用创建 JSONAPISerializer? 根据我对文档的理解。在制作 JSONAPISerializer 之前,我必须先创建一个模型。但我需要调用未列为我的模型的自定义端点。

我的目标是pushPayload 所有来自我的端点的侧载数据。但问题是:

{  
 "data":[  
  {  
     "type":"promotions-verify",   <----- it's not an actual model 
     "attributes":{  
        "cart-items-discount-in-cents":21900
      },
    "relationships":{...},    <---- sideloaded data that I want to push on ember-data
  }],

 "included": []              <---- sideloaded data that I want to push on ember-data
}

【问题讨论】:

    标签: ajax ember.js ember-data jsonapi-serialize


    【解决方案1】:

    你有什么理由不能为promotions-verify 制作模型吗?这将是在侧加载数据中实现加载的最简洁方式,因为 Ember 将为您处理大部分序列化/推送到存储。

    如果这不可行并且您发出 ajax 请求,您可能需要映射 relationshipsincluded 有效负载以相互匹配(Lodash _.map() 可以很好地解决这个问题)。然后您可以手动将该数据 (pushPayload) 推送到 Ember 存储,同时确保您推送的项目也具有模型和序列化程序。

    另外,我不确定这是否是偶然的,但您的示例负载不符合 JSON API 标准 - relationships 对象应该嵌套在 data 中。这将影响 Ember 序列化数据的方式,正如它所期望的那样:

    {
        "data": [{
            "id": 1,
            "type": "promotions-verify",
            "attributes": {},
            "relationships": {}
        }],
        "included": []
    }
    

    【讨论】:

    • 我更新了 JSON 响应,我不小心把 relationships 出数据了。顺便说一句,我尝试创建一个名为 promotions-verifypushPayload 的模型,但是 ember 向我抛出了一个错误,它期望来自 promotions-verify 的 id。但由于promotions-verify 不是实际模型(只是一种资源类型)。我的回复中没有任何 ID。但我会考虑使用 Lodash。
    • 啊,我明白了。在这种情况下,映射数据仍然有效。否则,您可以为promotions-verify 创建一个序列化程序并使用normalizeResponse,为每个promotions-verify 对象手动添加一个id,就像discuss.emberjs.com/t/…(旧帖子,但这个想法仍然有效)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2019-10-27
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多