在这个例子中,我建议在 Post 中嵌入标签,这样生成的结构看起来像这样
{
title: "some post",
tags: [ "tag1", "tag2" ]
}
当您不需要对关系具有附加值时,这通常是一种很好的做法。如果您想Tag
在客户端上拥有模型,您仍然可以通过嵌入来实现。
{
title: "some post",
tags: [ { name: "first tag" }, { name: "second tag" } ]
}
在这种情况下,您可以将其指定为嵌入关系,例如
App.Post = DS.Model.extend({
title: DS.attr("string"),
tags: DS.hasMany("App.Tag")
});
App.Tag = DS.Model.extend({
name: DS.attr("string"),
post: DS.belongsTo("App.Post")
});
App.store.adapter.serializer.map("App.Tag", {
tags: { embedded: 'load' }
});
请记住,嵌入仅适用于 Ember Data 修订版 10。它在 5-9 中不受支持。
大多数时候,您并不真的想以与在关系数据库中建模相同的方式对所有内容进行建模。
你应该倾向于 NoSQL-ish JSON,这通常意味着嵌入东西,而不是建立复杂的关联。这样做的原因是您的数据库可以JOIN
非常有效地进行数据处理,尤其是使用索引,但是通过网络执行此操作是一个坏主意,因为它会导致大量请求。