4

我已经看到了一些方法来做到这一点,但我很好奇“最正确”的方法是使用 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';
    }
});
4

3 回答 3

2

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

于 2013-04-22T00:36:51.253 回答
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'
});
于 2018-03-16T17:21:46.460 回答
0

如该线程中所述,请尝试https://github.com/toranb/ember-data-django-rest-adapter/issues/14

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

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

于 2013-09-03T05:45:47.163 回答