我有两个API,比方说:
aaa.com/api/v1/events
bbb.com/api/events
两者都实现JSONAPI适配器,然后返回带有type="events"
的有效负载。
因此,我必须将这些模型的范围限定在子文件夹中:
models/aaa/event.js
models/bbb/event.js
这导致以这种方式查询模型:
this.get('store').findAll('aaa/event');
然后,我实现了一个适配器:
// adapters/aaa/event.js
import config from '../../config/environment';
import DS from 'ember-data';
import Ember from "ember";
const { String } = Ember;
export default DS.JSONAPIAdapter.extend({
host: 'aaa.com',
namespace: 'api/v1',
pathForType: function(type) {
return String
.underscore(type) // `aaa/some-model` -> `aaa/some_model`
.pluralize() // `aaa/some_model` -> `aaa/some_models`
.replace("aaa/", ""); // `aaa/some_model` -> `some_model`
},
});
到目前为止,Ember正确调用了aaa.com/api/v1/events
,返回的有效内容被输入events
但是Ember无法将其转换为aaa/events
。
我该怎么办?
答案 0 :(得分:1)
因此,您获得了aaa/event
和bbb/event
的特定于模型的序列化程序。您可以覆盖modelNameFromPayloadType
方法将events
翻译为所需的型号名称aaa/events
。
对于aaa /事件序列化程序,
modelNameFromPayloadType(payloadType) {
return 'aaa/event';
}