【发布时间】:2017-09-28 09:05:41
【问题描述】:
我设置了一个简单的Ember Twiddle 来向您展示我在尝试更新模型时发生的错误。
我使用ember-cli-mirage 来模拟数据是相当可观的。
根据文档,我创建了一个应该处理 PUT 请求的速记路线。
确实如此,但出现错误:Your handler for the url /api/shops/1 threw an error: Cannot convert undefined or null to object
使用 JSONAPISerializer 时,一切都在使用速记 (mirage/config.js) 并且我能够更新模型,但在我的情况下,我必须在响应中使用带有序列化 ID 的 RESTSerializer。
我发送模型的attrs 时的请求有效负载在属性名称的末尾没有Id,f.e.:
// attrs object in PUT request
{
name: "Shop 1",
city: "1" // belongsTo relationship,
}
现在 Mirage 正在尝试在必须更新的相应数据库模型上查找这些属性,但找不到,因为在数据库中它是 cityId 而不仅仅是 city...
我还发现了这个 issue report 并且它正在工作,但我希望我可以避免这样的事情。据我所知,在之前版本的 ember-cli-mirage (v0.1.x) 中,也不需要重写序列化程序中的 normalize 方法,以便能够使用带有 serializedIds 的 RestSerializer……
我的问题是: 有没有办法只使用速记路由处理程序,或者我真的必须编写帮助程序或其他自定义解决方案,因为我必须使用 RestSerializer? 那会很伤心,但至少那时我会知道。
感谢您的支持!
【问题讨论】:
-
我不知道答案,但您可能需要记下您要使用的 mirage 版本。
-
我想使用一个支持工厂和自动模型检测的版本。但是当我尝试包含这两个功能的第一个版本时,它的行为也与我上面描述的一样。
标签: ember.js ember-data ember-cli-mirage