请原谅我提出这个标题,但我真的不知道怎么问这个,所以我只是解释一下。 型号:组(有)用户(有)发布 定义为:
// models/group.js
name: DS.attr('string'),
// models/user.js
name: DS.attr('string'),
group: DS.belongsTo('group')
// models/post.js
name: DS.attr('string'),
user: DS.belongsTo('user'),
当我请求/posts
时,我的服务器返回此嵌入记录:
{
"posts": [
{
"id": 1,
"name": "Whitey",
"user": {
"id": 1,
"name": "User 1",
"group": 2
}
}
]
}
请注意,group
没有组记录,而是ID。
使用我的序列化器:
// serializers/user.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
group: {embedded: 'always'}
}
});
// serializers/post.js
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
user: {embedded: 'always'}
}
});
这需要User
和Post
模型在其中嵌入记录。但是,它会带来一个问题,因为在json响应中没有嵌入的group
记录。
请帮忙。
答案 0 :(得分:4)
这是一篇关于序列化的好文章:
http://www.toptal.com/emberjs/a-thorough-guide-to-ember-data#embeddedRecordsMixin
Ember docs:
http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html
基本上,它说的是你有2个选项1)序列化和2)反序列化。这两个有3个选项:
当您撰写{embedded: 'always'}
时,这是:{serialize: 'records', deserialize: 'records'}
的缩写。
如果您不想发送所有关系,请写下:{serialize: false}
。
EmbeddedRecordsMixin 的Ember默认值如下:
BelongsTo:{serialize:'id', deserialize:'id'}
HasMany:{serialize:false, deserialize:'ids'}