将两个API源汇聚到一个模型中的适配器

时间:2015-02-12 15:00:55

标签: ember.js ember-data json-api

我们说我有一个JSON API,我可以访问两个模型:catsdogs。但是,在我的Ember应用程序中,我只有一个模型:animals

虽然每次save() animal cat时,如果我在任何其他模型中收到dog链接,则会以animal的身份发布到API它应该由ember-data本地存储为{{1}}。

实现这一目标最连贯的方法是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

固定。为了将来参考,可以为模型创建别名,扩展ApplicationSerializer(在这种情况下,我们的模型是animal,虽然它有一个在API中使用cat模型的适配器,dog模型也需要解析为animal

App.ApplicationSerializer = DS.ActiveModelSerializer.extend({
  typeForRoot: function(root) {
    if (root == 'dog' || root == 'dogs') { root = 'animal'; }
    return this._super(root);
  }
);

答案 1 :(得分:0)

您应该能够通过自定义REST适配器来实现您想要的功能。具体来说,查看overriding the buildURL method以检测传递的记录的类型,并根据确定是否应将此特定模型持久保存到cats端点或{{1}的逻辑来构造要传递的URL。终点。