我有一个使用 Ruby on Rails API 后端的 Ember CLI 应用程序。我最初使用 REST API 构建了它,并尝试将其迁移到使用 JSONAPI。
要将数据从 Rails 发送到 Ember,这很简单 - 我刚刚更新了我已经使用的 ActiveModelSerializers gem,并将 Ember 应用程序中的适配器和序列化器更新为如下所示:
export default DS.JSONAPIAdapter;
export default DS.JSONAPISerializer;
问题是重写我的整个 Rails 应用程序以响应新的数据格式需要做很多工作,所以我想在将数据从 Ember 发送到 Rails 时坚持使用 REST 适配器/序列化程序(至少在短期内)。我不知道该怎么做。我在想这样的事情:
export default DS.JSONAPISerializer.extend({
serialize(snapshot, options){
return DS.RESTSerializer.serialize(snapshot, options);
}
});
这行不通。有人这样做过吗?有没有好办法?
非常感谢
基本上DS.RESTSerializer
是一个class
,但serialize
是一个实例方法。所以你必须.create()
序列化程序:
let instance = DS.RESTSerializer.create().serialize(...arguments)
但是,这将不起作用,因为序列化程序确实访问 DI 容器,因此期望由容器初始化。您可以像这样手动注入所有者:
DS.RESTSerializer.create(Ember.getOwner(this).ownerInjection()).serialize(...arguments);