在最新版本的ember-data中设置自定义primaryKey属性的正确方法是什么?

时间:2013-04-21 21:53:44

标签: ember.js ember-data

我已经看到了一些方法可以做到这一点,但我很好奇“最正确”的方法是使用最新版本(master甚至)的ember-data rev 12

选项#1(看似最明显的方式)

App.Post = DS.Model.extend({
    primaryKey: '_id',
    _id: DS.attr('string')
});

选项#2(按类型使用适配器映射)

App.Adapter.map('App.Post', {
    primaryKey: '_id'
});

选项#3(在序列化程序中硬代码 - 假设每个模型都有相同的自定义pk)

App.MySerializer = DS.RESTSerializer.extend({
    primaryKey: function(type) {
        return '_id';
    }
});

3 个答案:

答案 0 :(得分:2)

答案是选项#2,因为适配器是相关组件。适配器需要知道哪个属性是主键。对模型或序列化器来说并不重要。

答案 1 :(得分:1)

这个问题很陈旧,但它没有被接受的答案,而且它出现在谷歌上面。

目前的答案是在序列化程序(https://guides.emberjs.com/v3.0.0/models/customizing-serializers/#toc_ids

上进行设置
// app/serializers/application.js

import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  primaryKey: '_id'
});

答案 2 :(得分:0)

如本主题所述,请尝试https://github.com/toranb/ember-data-django-rest-adapter/issues/14

YourRestadapter.configure('App.Person', {
    primaryKey: 'slug'
});

YourRestadapter =您在项目中使用的其余适配器(例如,DS.RESTAdapter)