Ember数据有很多关系

时间:2013-02-28 23:50:34

标签: ruby-on-rails ember.js ember-data

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

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

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

客户端使用ember,我需要能够列出父母的孩子。但是,如果没有遍历每个父级的所有子项,我就无法访问它。

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

1 个答案:

答案 0 :(得分: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')
});

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

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

相关问题