ember.js – 如何建立ember-data中相关模型之间的关系

我假设如果ember-data中的模型包含与第二个模型相关的id,那么id也可以用于建立与第二个模型对象的belongsTo关系,根据我创建的问题
here on github.显然这不是案子.

有没有人知道在两个对象之间建立关系所需的情况,这两个对象都存在于ember-data的商店中?是否必须同时加载相关对象? (或者在RESTAdapter的情况下通过相同的请求),以便id引用工作?如果它们没有通过相同的请求,那么无论如何都要在以后的请求中建立该关系而不必为寻找关系并手动设置它们的请求添加事件处理程序?这是我看到的问题的一个例子:

App.ModelA = DS.Model.extend({
  name:      DS.attr('string'),
  modelBId:  DS.attr('number'),
  modelB:    DS.belongsTo('App.ModelB')
});

App.ModelB = DS.Model.extend({
  name: DS.attr('string')
});

App.ModelB.find(2);       // returns an object

modelA.get('modelBId');   // returns 2
modelA.get('modelB');     // returns null

最佳答案 例如,当您想要从REST API加载/保存数据时,关联对象的ID很有用.然后,您可以使用RESTAdapter并发送相关对象的ID.

例如,对于belongsTo关系,ember-data假定您将使用相关对象的ID发送密钥model_b_id.然后,ember-data将处理此对象的加载,通常是通过调用API:GET model_b / the_id

也可以通过嵌入它们来加载相关对象,而不是通过id给出引用.

有关更多示例,请参阅有关StackOverflow和ember-data项目中的示例/测试的其他问题.

点赞