【问题标题】:Ember multi word model name - The response from a findAll must be an Array, not undefinedEmber 多词模型名称 - 来自 findAll 的响应必须是数组,而不是未定义
【发布时间】:2014-08-08 05:11:54
【问题描述】:
  • 我的模型是 var UserLookup = DS.Model.extend({ 'name': DS.attr('string') });

  • 在我的适配器中,我查找如下 this.store.find('userLookup').then(function(results){ }

  • 来自 REST API 的响应是 {"userLookups":[{"id":1,"name":"xxx"},{"id":2,"name":"yyyy"}]}

在反序列化时失败并出现错误 Error: Assertion Failed: The response from a findAll must be an Array, not undefined

我确保模型查找和 JSON 响应中的键都是驼峰式的。如果我用一个词重命名模型,一切正常。

我是否在序列化程序中遗漏了可能导致此错误的内容?

【问题讨论】:

  • 您是否在应用程序变量上注册了模型,即App.UserLookup = ...?因为我认为如果您将其注册为全局,它不会起作用。
  • 我从路由器返回模型,如果我将模型重命名为单个单词,这将起作用。仅在具有多个单词名称的模型的情况下才会出现问题。
  • 你能放一个 bin (emberjs.jsbin.com) 来显示问题吗?
  • 您是否尝试过以 JSON 格式返回 { "user_lookups": [...] },即使用蛇形大小写而不是骆驼形大小写?
  • 您使用的是 Rest 还是 ActiveModel 序列化程序?如果是这样,您可以尝试调试github.com/emberjs/data/blob/master/packages/ember-data/lib/… 以查看 ED 正在尝试查找您的“userLookups”键的类型吗?

标签: ember.js ember-data


【解决方案1】:

我认为 API 响应中的根密钥需要user_lookups,而不是userLookups

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多