Javascript 余烬3.5属于未解决的关系

Javascript 余烬3.5属于未解决的关系,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我以前有emberjs 1.13,我升级到了3.5 我在belongsTo关系中遇到问题,无法访问其中的数据。我的代码如下 模型 内部控制器 this.get('model.published') working this.get('model.author.name') not working 但同样的代码在emberjs的1.13上运行 使用余烬数据1.13 与余烬数据3.5 这是一个从1.13直接升级到3.5的大升级 很多事情都改变了。为了充分理解什么发生了变化以及为什么发生了变化

我以前有emberjs 1.13,我升级到了3.5 我在belongsTo关系中遇到问题,无法访问其中的数据。我的代码如下

模型

内部控制器

this.get('model.published') working 
this.get('model.author.name') not working 
但同样的代码在emberjs的1.13上运行

使用余烬数据1.13

与余烬数据3.5


这是一个从1.13直接升级到3.5的大升级

很多事情都改变了。为了充分理解什么发生了变化以及为什么发生了变化,我强烈建议您每次升级次要或主要版本时都阅读这些内容。非常有用

很可能未将
作者
加载到存储中。检查路线的
模型()
、网络请求和余烬检查器(如果数据已加载)

如果加载,它可能是
async:true
。尝试删除它吗

这是Ember 3.5中的一个工作示例:

app/models/thing.js

import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships';

export default Model.extend({

  // Attributes
  title: attr('string'),
  description: attr('string'),
  published: attr('string'),
  publishedAt: attr('string'),

  // Relationships:
  // No need for async: true
  course: belongsTo('course'),
  author: belongsTo('author')

});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';

export default Model.extend({
  name: attr('string')
});
app/models/author.js

import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships';

export default Model.extend({

  // Attributes
  title: attr('string'),
  description: attr('string'),
  published: attr('string'),
  publishedAt: attr('string'),

  // Relationships:
  // No need for async: true
  course: belongsTo('course'),
  author: belongsTo('author')

});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';

export default Model.extend({
  name: attr('string')
});
app/route/thing.js

import Route from '@ember/routing/route';

export default Route.extend({
  model(params) {
    // Assuming you use JSON API
    // Make sure `author` is included when fetching `thing`
    return this.store.query('thing', {
      include: 'author, course'
    }),
  }
});
import Controller from '@ember/controller';

export default Controller.extend({
  init(){
    console.log(this.model.author.name)
  }
});
app/controllers/thing.js

import Route from '@ember/routing/route';

export default Route.extend({
  model(params) {
    // Assuming you use JSON API
    // Make sure `author` is included when fetching `thing`
    return this.store.query('thing', {
      include: 'author, course'
    }),
  }
});
import Controller from '@ember/controller';

export default Controller.extend({
  init(){
    console.log(this.model.author.name)
  }
});

作者
是否已加载?你能在旋转中复制吗?这看起来不错,应该能用。你能给我们看看你的路线
模型()
,路线模板,路线控制器和作者模型吗?看来作者还没有出现在商店里。也许删除异步?非常感谢您的详细回答。但这并不能解决我获得作者的问题。关于你们的更多信息,我已经升级了1.13->2.18->3.5,但问题也出现在2.18中。我已经在stackoverflow中重新编写了一个详细的问题。如果你能看一看,我将不胜感激