У меня есть компонент, который показывает и создает комментарии для поста, этот компонент имеет форму для создания новых комментариев и отправляет их через POST на сервер, нормальная полезная нагрузка будет:
{
data: {
attributes: {
created_at: "foo",
autor: "foo",
text: "foo"
},
relationships: {
post: {
data: { type: "posts", id: 1234 },
id: "1234",
type: "loans"
}
},
type: "comment"
}
}
Проблема возникает, когда вам нужно использовать компонент в другом представлении и, что более важно, когда имя модели отличается, скажем, posts_breakdown, в этом случае полезная нагрузка будет:
{ data: {
attributes: {
created_at: "foo",
autor: "foo",
text: "foo"
},
relationships: {
post: {
data: null
}
},
type: "comment"
}
}
Понятно, что в комментариях нет никакого отношения posts_breakdown, первое, что я пытался добавить это отношение к модели с posts_breakdown: belongsTo (posts_breakdown)
.
Проблема в том, что бэкэнд не может его распознать и не может его изменить.
Бэкэнд принимает значения в связях, чтобы связать комментарий с постом (поле post_id в таблицу комментариев)
My question
: Есть ли какой-нибудь способ «обмануть» бэкэнд и / или изменить полезную нагрузку, поэтому подумайте, что модель post_breakdown опубликована?
Ниже показано, как у меня есть определенные модели:
comment.js:
export default DS.Model.extend ({
author: DS.attr (),
text: DS.attr (),
created_at: DS.attr (),
post: DS.belongsTo ('post'),
posts_breakdown: DS.belongsTo ('posts_breakdown'),
});
posts.js:
export default DS.Model.extend ({
text: DS.attr (),
created_at: DS.attr (),
author: DS.attr (),
comments: DS.hasMany ('comments'),
});
post_breakdown.js
export default DS.Model.extend ({
most_commented_post: DS.attr (),
last_commented_post: DS.attr (),
frequent_users: DS.attr (),
comments: DS.hasMany ('comments'),
});