如何初始化Ember模型ID?

时间:2018-06-07 12:57:30

标签: ember.js

我有一个EmberJS模型,它是从JSON对象初始化的。此JSON对象用于包含id变量,但现在其名称已更改。有没有办法告诉模型从JSON中使用id的内容?有些函数使用模型的id变量,因此最好的方法是将id设置为模型变量之一的引用。

1 个答案:

答案 0 :(得分:2)

您可以创建名称与模型匹配的序列化程序(ember generate serializer [name]),并设置应使用的primaryKey代替默认id

  

如果您的后端使用id以外的密钥,则可以使用序列化程序的primaryKey属性在序列化和反序列化数据时将id属性正确转换为id。

// app/serializers/modelName.js
import DS from 'ember-data';

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

https://guides.emberjs.com/release/models/customizing-serializers/#toc_ids

或者,如果您希望将primaryKey维持为id,则可以使用序列化程序通过normalizeResponse方法将值复制到id属性:

import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    payload.data.id = payload.data.newModelId;
    delete payload.data.newModelId;

    return this._super(...arguments);
  }
});