TypeError:无法读取未定义的属性'typeKey'

时间:2014-08-28 18:40:41

标签: ember.js ember-data

我有一个模型用户有很多实现

{
   username: DS.attr('string'),
   challenges: DS.hasMany('challenge', {async: true, inverse: 'author'}), 

  trials: DS.hasMany('trial',{async: true, inverse: 'user'}),
  arenasTried: DS.hasMany('arenaTrial',{async: true, inverse: 'user'}),

  groups: DS.belongsTo('group',{async: true, inverse: 'founder'}),
  group: DS.hasMany('group',{async: true, inverse: 'members'})
}

我的' / api / users'路线返回

 {
   users: [{
    _id: "53fcd802647d05af65227306"
    arenasTried: [53fcde1006c57af668f39e49]
    challenges: []
    email: "st@email.com"
    exp: 1
    group: null
    groups: []
    role: "student"
    rp: 0
    trials: [53fcde1006c57af668f39e4a, 53fcde1006c57af668f39e4b]
    username: "stud"
 }, ...]

}

我得到一个TypeError:无法读取属性' typeKey'未定义的

1 个答案:

答案 0 :(得分:2)

在堆栈跟踪之后,我开始抛出一个断点,其中弹出了未定义的值。 我注意到它没有第一次发生并且不得不点击恢复几次,因为在异常选项之前没有停止我必须计算错误发生之前的次数并且之前停止一个值。

每当我环顾四周,这让我发现factory.typeKey通常与关系有关,所以我开始查找堆栈跟踪直到我发现当key =' groups& #39;在第11750行:data[key] = store.recordForId(id.type, id.id); id.type未定义

我首先想到它可能与groups数组是空的有关,但挑战也是一个空数组,所以为了实验,我改变了JSON响应以仅返回挑战,并且没有抛出任何错误。

因为我从另一个问题中得知,typeKey错误与ember-data有关,它没有预料到我知道它确实必须与我定义组关系的方式有关,当然我注意到我已经颠倒了组和组的定义,除了组成为belongsTo而不是hasMany关系,我切换它并且它起作用。