Ember数据关系和灯具

时间:2014-03-15 07:47:20

标签: ember.js ember-data

使用ember数据关系可以是{async: true}{async: false}。如何创建一个模型FIXTURES,模仿同步关系的行为,如文档中所述:

var attr = DS.attr,
    hasMany = DS.hasMany,
    belongsTo = DS.belongsTo;

App.Post = DS.Model.extend({
  title: attr(),
  comments: hasMany('comment'),
  user: belongsTo('user')
});

App.Comment = DS.Model.extend({
  body: attr()
});

Ember Data期望对/ posts / 1的GET请求将以下列格式返回JSON:

{
  "post": {
    "id": 1,
    "title": "Rails is omakase",
    "comments": ["1", "2"],
    "user" : "dhh"
  },

  "comments": [{
    "id": "1",
    "body": "Rails is unagi"
  }, {
    "id": "2",
    "body": "Omakase O_o"
  }]

}

1 个答案:

答案 0 :(得分:0)

您需要覆盖适配器的find方法。 HerefindFixtureAdapter方法的当前实现。您可以看到它只是找到具有给定ID的记录,然后返回它。您将要修改它以便它侧载正确的记录。像这样:

var json = {};
json[type.typeKey] = requestedRecord;
type.eachRelationship(function(name, meta) {
    if (!meta.async) {
        json[meta.type.typeKey.pluralize()] = [ /* put related records here */ ];
    }
});

语法可能不完美,但你应该明白这一点。