Ember.js DS模型中primaryKey的自定义名称

Ember.js DS模型中primaryKey的自定义名称,ember.js,Ember.js,我数据库中的所有表都有唯一的主键,它是通过将单数表名与“\u id”连接而创建的。例如,表“短语”中的“短语id”或表“用户”中的“用户id” Ember要求对json结果中的主键使用“id”。我已通过设置自定义ApplicationSerializer成功覆盖了它: App.ApplicationSerializer = DS.RESTSerializer.extend({ primaryKey: 'phrase_id' }); 无论如何,当我需要为每个模型设置自定义密钥时,该解决方

我数据库中的所有表都有唯一的主键,它是通过将单数表名与“\u id”连接而创建的。例如,表“短语”中的“短语id”或表“用户”中的“用户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';
    }
});

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

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

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

这是很多样板代码,但非常简单,正如Tony Hopkinson所说,您并不太想与Ember.js抗衡。

为什么需要自定义密钥?您正在与EmberJS期望的约定作斗争,转换数据库以满足约定不是更容易吗?对于其他正在使用数据库的应用程序,将有很多工作要做。对我来说很奇怪,这种类型的应用程序不能改变这样的属性。哦,就是这样,余烬、rails、EF(代码优先)等都是数据库二级应用程序,所以除非你碰巧符合惯例(如果这是一次幸运的事故,就买彩票),否则这将是一场漫长的战斗。