Ember js 属于关系

aha*_*ham 2 ember.js ember-data ember-cli

我有两个模型员工和 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")
});
Run Code Online (Sandbox Code Playgroud)

我使用 RESTAdapter 进行 REST 调用。

//serializer
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
});
Run Code Online (Sandbox Code Playgroud)

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

请检查您的序列化程序并确保它将关系负载序列化为 JSON API 格式。错误:断言失败:遇到了一个没有属于属于关系的类型的关系标识符 '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"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

有人可以指导我纠正错误吗

小智 6

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

import DS from 'ember-data';

export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        empdetails: {
            serialize: 'records',
            deserialize: 'records'
        }
}});
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此文章