Ember.js:如何坚持多对多关系

时间:2013-03-01 14:34:05

标签: ember.js ember-data

我正在构建一个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...

我希望它还包含与之关联的标签。

我哪里错了?

2 个答案:

答案 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/