我正在构建一个Ember.js应用程序,该应用程序允许2个实体之间的多对多关系,例如发布和标记:
App.Post = DS.Model.extend({
title: DS.attr("string"),
body: DS.attr("string"),
tags: DS.hasMany("App.Tag")
});
App.Tag = DS.Model.extend({
name: DS.attr("string"),
posts: DS.hasMany("App.Post")
});
在持久保存新记录时,我很难让Ember序列化多对多关系。这就是我目前的做法:
// Create the post
post = store.createRecord(App.Post, {title: "Example", body: "Lorem ipsum..."});
// Create the tag
tag = store.createRecord(App.Tag, {name: "my-tag"});
// Add the tag to the post
post.get("tags").addObject(tag);
// Add the post to the tag
tag.get("posts").addObject(post);
// Save
store.commit();
新记录显示在DOM中,并发布到我的API,但序列化不包括它们之间的关系。例如,帖子的序列化如下:
title=Example&body=Lorem+ipsum...
我希望它还包含与之关联的标签。
我哪里错了?
答案 0 :(得分:1)
默认情况下,如果您将关系配置为序列化程序中嵌入的关系,hasMany
关系仅序列化为JSON中的_ids
数组。有关详细信息,请查看this answer。
答案 1 :(得分:0)
您可以通过覆盖序列化程序来完成Ember Data 1.0.0: http://mozmonkey.com/2013/12/serializing-embedded-relationships-ember-data-beta/