【问题标题】:Ember js belongs to relationshipEmber js 属于关系
【发布时间】:2024-01-21 18:35:01
【问题描述】:

我有两个模型employee 和empdetails

//employee model
import DS from 'ember-data';
export default DS.Model.extend({
    empId : DS.attr(),
    password : DS.attr(),
    email : DS.attr(),
    empdetails : DS.belongsTo("empdetails") 
});

//empdetails model
import DS from 'ember-data';    
export default DS.Model.extend({
    firstName : DS.attr(),
    lastName : DS.attr(),
    dateOfJoining: DS.attr(),
    employee : DS.belongsTo("employee")
});

我使用 RESTAdapter 进行 REST 调用。

//serializer
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
});

当我尝试为员工发出获取请求时,我收到以下错误

请检查您的序列化程序并确保它将关系负载序列化为 JSON API 格式。错误:断言失败:遇到一个没有类型为 belongsTo 关系 'empdetails' on 的关系标识符,需要一个类型为 'empdetails' 的 json-api 标识符,但找到了 '{"id":"1","firstName":"xxx "}

我从后端获得以下 JSON

[
  {
    "id": 1,
    "email": "xyz@gmail.com",
    "password": "12345678",
    "empdetails": {
      "id": 1,
      "firstName": "xxx",
      "lastName": "yyy",
      "dateOfJoining": "22-10-2018"
    }
  }
]

有人可以指导我纠正错误

【问题讨论】:

    标签: ember.js ember-data ember-cli


    【解决方案1】:

    尝试如下更新您的员工序列化程序:

    import DS from 'ember-data';
    
    export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin, {
        attrs: {
            empdetails: {
                serialize: 'records',
                deserialize: 'records'
            }
    }});
    

    更多详情请见this article

    【讨论】:

    • 您能否解释一下我们何时以及为什么必须使用序列化和反序列化?
    • @MahalakshmiRamanathan 请看附件链接,文章根有描述。谢谢。
    【解决方案2】:

    如果您使用 Django Rest 作为后端, 那么请使用 DRF Adapter 和 DRF Serializer

    Visit here了解更多信息

    【讨论】: