我们目前使用的是Ember Data 1.0.0-beta.18,Ember 1.12和CLI 0.2.7。
自上次更新以来,我们正在获得如下的ember数据断言警告:
[Warning] WARNING: Encountered "open_requests" in payload, but no model was found for model name "open-request" (resolved model name using vault@serializer:appuser:.typeForRoot("open_requests")) (vendor.js, line 15423)
我还注意到,我们不再调用appuser序列化程序中包含的控制台日志:
export default DS.RESTSerializer.extend( {
typeForRoot: function(root) {
console.log('appuser serializer called', root);
if (root === 'open_requests') return this._super('openrequest');
return this._super(root);
},
});
我可以确认在此更新之前调用了TypeForRoot。自升级以来,我们遇到了许多其他问题,看起来它们都可能以某种方式与序列化器相关,所以问题就是为什么我们得到这些警告以及为什么不再调用typeForRoot?
答案 0 :(得分:3)
Ember数据已切换为modelNameFromPayloadKey
,代码中不再使用typeForRoot
,除非您专门调用它。
http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_typeForRoot
答案 1 :(得分:3)
beta.18引入了一个潜在的重大变化 - 看起来它导致你的应用程序崩溃..
简答:将typeForRoot
重命名为modelNameFromPayloadKey
[#3034] 可能发生变化如果您覆盖typeForRoot
目前正在引入modelNameFromPayloadKey
并弃用typeForRoot
@fivetanley
RESTSerializer#typeForRoot
已被弃用。您可以改为使用RESTSerializeer#modelNameFromPayloadKey
。
添加了RESTSerializer#payloadKeyFromModelName
。这允许你
typeKey
。请改用modelName。指定JSON有效负载的传出根密钥。
DS.RESTSERIALIZER.TYPEFORROOT现在是DS.RESTSERIALIZER.MODELNAMEFROMPAYLOADKEY
为了在typeKey
到modelName
的命名更改中获得更多一致性,typeForRoot
已重命名为modelNameFromPayloadKey
。该功能用于相同的目的,因此这应该是您可以通过在项目中搜索和替换来实现的快速重构。虽然调用typeForRoot会触发弃用警告,但是在子类中覆盖不会。