DS模型中主键的自定义名称

时间:2014-03-08 13:36:42

标签: ember.js

我数据库中的所有表都有唯一的主键,它是通过将单个表名与“_id”连接而创建的。例如表“users”中的“phrase_id”或表“users”中的“user_id”。

Ember要求在json结果中使用“id”作为主键。我设法通过设置自定义ApplicationSerializer来覆盖它:

App.ApplicationSerializer = DS.RESTSerializer.extend({
    primaryKey: 'phrase_id'
});

无论如何,当我需要每个模型的自定义键时,该解决方案将为所有模型设置新的id键。我怎么解决这个问题?我想我需要创建一些匿名函数,它将根据模型名称动态创建primaryKey,但是如何将模型名称绑定到该函数?

App.ApplicationSerializer = DS.RESTSerializer.extend({
    primaryKey: function() {
        return modelName+'_id';
    }
});

1 个答案:

答案 0 :(得分:1)

我认为为每种模型类型声明序列化器是最简单的。

App.UserSerializer = DS.RESTSerializer.extend({
    primaryKey: 'user_id'
});

App.PhraseSerializer = DS.RESTSerializer.extend({
    primaryKey: 'phrase_id'
});

这是很多样板代码,但它非常简单,正如托尼·霍普金森所说,你真的不想过多地与Ember.js作战。