【发布时间】:2019-03-25 03:43:50
【问题描述】:
我有一个显示和创建帖子 cmets 的组件,该组件有一个用于创建新 cmets 并通过 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"
}
}
显然,在 cmets 中,没有关系 posts_breakdown,我首先尝试使用 posts_breakdown: belongsTo (posts_breakdown) 将此关系添加到模型中。
问题是,后端无法识别它并且无法修改它。 后端正在获取关系上的值以将评论与帖子相关联(post_id 字段到评论表中)
My question: 有没有办法“欺骗”后端和/或修改payload,所以认为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'),
});
【问题讨论】:
-
写一个序列化器来转换你发送到服务器的payload
-
嗨,非常感谢,这是我需要的 :)
标签: ember.js ember-data ember-cli