1

这是一个关于我的理解的问题。

在 Rails 中,当您在两个模型(父模型和子模型)之间设置 has_many-belongs_to 关联时,id 仅存储在子模型上。如果要查找孩子的父母,则使用孩子的 id 查询数据库。为了找到所有的父母子女,数据库将查询所有具有与当前父母匹配的 parent_id 的记录。Rails 是我的后端,所以这就是 ember-data 与之交互的内容。

ember-data 中的关联似乎需要以两种方式设置,并且两个模型上都需要存在 id。具有 has_many 关系的模型应该有一个包含其子 ID 的数组。但是,这并不存储在服务器端。

客户端使用 ember,我需要能够列出父母的孩子。但是,如果不为每个父母迭代所有孩子,我就无法访问它。

这里有一个根本的不匹配,我只想确保我正确地实现了我的应用程序。我的 ajax 应该返回每个父母的 id 数组还是应该在客户端填充这些?

4

1 回答 1

4

在 JSON 中包含关系ids数组hasMany,严格来说,是可选的。在实践中它是必不可少的,因为没有它,Ember-Data 将只能找到那些已经加载的相关记录。

例如,如果您有

App.Post = DS.Model.extend({
  comments: DS.hasMany('App.Comment')
});

App.Comment = DS.Model.extend({
  post: DS.belongsTo('App.Post')
});

并且您省略了JSON 中的comment_ids数组post,那么您将需要手动调用App.Comment.find()以加载所有评论,然后post.get('comments')才能保证包含与给定post.

如果您comment_ids在 JSON 中包含该数组post,则 Ember-Data 将对尚未加载的评论发出后续请求。

于 2013-03-01T00:39:20.893 回答