余烬类型未定义且加载路线出错,具有一对多关联

Ember type is undefined & error loading route with one-to-many association

本文关键字:一对多 关联 出错 类型 未定义 加载路 余烬      更新时间:2023-09-26

我已经在我的 Ember 应用程序中引入了对两个模型的一对多关联,我遇到了这些相当神秘的错误:

[09:01:20.450] TypeError: type is undefined @ http://emberjs.com.s3.amazonaws.com/getting-started/ember-data.js:2284
[09:01:20.444] DEPRECATION: Action handlers contained in an `events` object are deprecated in favor of putting them in an `actions` object (error on <Ember.Route:ember362>)
    trigger@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:29641
    handleError@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:29903
    invokeCallback@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:8055
    Promise.prototype.then/<@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:8109
    EventTarget.trigger@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:7878
    reject/<@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:8180
    DeferredActionQueues.prototype.flush@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:5459
    Backburner.prototype.end@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:5545
    Backburner.prototype.run@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:5584
    executeTimers@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:5807
    Backburner.prototype.setTimeout/laterTimer<@file:///home/zen/ember-project/js/libs/ember-1.0.0.js:5666
[09:01:20.444] Error while loading route: (new TypeError("type is undefined", "http://emberjs.com.s3.amazonaws.com/getting-started/ember-data.js", 2284))

我不完全确定我是否应该在DS.belongsTo('modelName')中大写、驼峰或小写模型名称,但是当它们骆驼化时我会收到此错误,其他大小写收到"找不到模型"错误,所以我认为这是最好的错误。

我的模型和夹具数据:

// Models
App.ServiceProvider = DS.Model.extend({
    name: DS.attr('string'),
    email: DS.attr('string'),
    customers: DS.hasMany('customer')
});
App.Customer = DS.Model.extend({
    serviceprovider: DS.belongsTo('serviceProvider'),
    firstname: DS.attr('string'),
    lastname: DS.attr('string'),
    email: DS.attr('string')
});
// Fixtures
App.ServiceProvider.FIXTURES = [
 {
   id: 1,
   name : "Some Org.",
   email : "admin@someorg.com.au",
   customers : [1, 2]
 },
 {
   id: 2,
   name : "Some Co.",
   email : "admin@someco.com.au",
   customers : [3, 4]
 }
];
App.Customer.FIXTURES = [
 {
   id: 1,
   firstname : "John",
   lastname : "Smith",
   email : "admin@someorg.com.au",
   serviceprovider : [1]
 },
 {
   id: 2,
   firstname : "Jane",
   lastname : "Smith",
   email : "admin@someco.com.au",
   serviceprovider : [1]
 },
 {
   id: 3,
   firstname : "Jerry",
   lastname : "Smith",
   email : "admin@someco.com.au",
   serviceprovider : [2]
 },
 {
   id: 4,
   firstname : "Janet",
   lastname : "Smith",
   email : "admin@someco.com.au",
   serviceprovider : [2]
 }
];

我对 Ember 很陌生,任何见解都值得赞赏。

我刚刚想通了,问题是使用数组作为一对一关系的 id。

这是有问题的夹具

App.Customer.FIXTURES = [
 {
   id: 1,
   firstname : "John",
   lastname : "Smith",
   email : "admin@someorg.com.au",
   serviceprovider : [1]
 }
 ]

这是工作的一个

 App.Customer.FIXTURES = [
 {
   id: 1,
   firstname : "John",
   lastname : "Smith",
   email : "admin@someorg.com.au",
   serviceprovider : 1
 }
 ]