我使用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);
}
});
这不起作用。有没有人这样做过?有没有好办法呢?
非常感谢
答案 0 :(得分:0)
基本上DS.RESTSerializer
是class
,但serialize
是实例方法。所以你必须.create()
序列化器:
let instance = DS.RESTSerializer.create().serialize(...arguments)
然而,这个将无法正常工作,因为Serializer确实访问了DI容器,因此期望由容器初始化。您可以像这样手动注入所有者:
DS.RESTSerializer.create(Ember.getOwner(this).ownerInjection()).serialize(...arguments);