Конечная точка API, с которой я работаю, возвращает данные с несколькими вложенными отношениями внутри нее, и я использую normalizeResponse()
в пределах DS.JSONAPISerializer
, чтобы массировать ее в нечто полностью совместимое с JSON-API.normalizeResponse не распознает связь между вложенными отношениями
Инспектор эмбера показывает, что все данные правильно помещаются в соответствующий контейнер. Связь между моделью верхнего уровня и дочерним элементом hasMany
работает, но связь между вложенными моделями не работает. Я проверяю это, перемещаясь внутри инспектора на дочернюю модель вложенной модели, нажимая на нее и отмечая, что его свойство content равно null.
Во-первых, обратите внимание на то, как мои модели созданы:
// models/search.js
// i am able to browse from the search model to children with success
export default DS.Model.extend({
articles: DS.hasMany('article'),
});
// models/article.js
// i CANNOT browse from an article down to its digest in ember inspector
export default DS.Model.extend({
search: DS.belongsTo('search'),
type: DS.attr(),
created: DS.attr(),
updated: DS.attr(),
digest: DS.belongsTo('digest'),
});
// models/digest.js
export default DS.Model.extend({
title: DS.attr(),
desc: DS.attr(),
date: DS.attr(),
article: DS.belongsTo('article'),
});
Теперь, вот мой модифицированную JSON после моих функций внутри normalizeResponse
полной. ПОСЛЕ возврата этих данных из normalizeResponse
, объект «дайджест» под родительским объектом «отношения» исчезает. Что-то не так с моим JSON? Я пробовал так много перестановок этого без успеха, и я уверен, что это соответствует спецификации JSON-API для Compound Documents.
{"data":{
"type":"searches",
"id":"17482738723",
"attributes":{
},
"relationships":{
"articles":{
"data":[
{
"type":"articles",
"id":"19988"
},
{
"type":"articles",
"id":"19989"
},
]
},
"digest":{
"data":[
{
"type":"digest",
"id":"19988_digest"
},
{
"type":"digest",
"id":"19989_digest"
},
]
}
}
},
"included":[
{
"id":"19988",
"type":"articles",
"attributes":{
"type": "internal",
"created":"2016-09-27T00:13:11.000Z",
"updated":"2016-09-27T00:13:11.000Z",
}
},
{
"id":"19988_digest",
"type":"digest",
"attributes":{
"title":null,
"desc":"four five six",
}
},
{
"id":"19989",
"type":"articles",
"attributes":{
"type": "internal",
"created":"2016-09-27T00:13:11.000Z",
"updated":"2016-09-27T00:13:11.000Z",
}
},
{
"id":"19989_digest",
"type":"digest",
"attributes":{
"title":"one two three",
"desc":null,
}
},
]
}