Ember.js Can';t使用“t”的荷载关系;获得;余烬3.2
我正在尝试加载一个我知道以前从未加载过的关系,但它似乎从未为此调用我的API 我的设置是:Ember.js Can';t使用“t”的荷载关系;获得;余烬3.2,ember.js,ember-data,Ember.js,Ember Data,我正在尝试加载一个我知道以前从未加载过的关系,但它似乎从未为此调用我的API 我的设置是: // routes/application.js export default Route.extend({ model() { return this.get('store').findRecord('post', 1, {include: 'user'}); } }); // routes/comments.js export default Route.extend
// routes/application.js
export default Route.extend({
model() {
return this.get('store').findRecord('post', 1, {include: 'user'});
}
});
// routes/comments.js
export default Route.extend({
model() {
let post = this.modelFor('application');
return post.get('user').get('actionHistory');
}
});
用户actionHistory
以前没有加载过,所以我希望服务器请求获取它,但从来没有这样做过<代码>用户可用
// models/user.js
export default DS.Model.extend({
actionHistory: DS.hasMany('action-history'),
...
});
// models/action-history.js
export default DS.Model.extend({
user: DS.belongsTo('user'),
...
});
我已经尝试了很多方法来确保它被加载,post.load('user.actionHistory')
,post.get('user').reload({include:'action history'})
,但没有任何效果
我的设置是否有问题,或者我试图获取关系的方式是否有问题?正如Gaurav在评论中提到的那样,余烬数据
findRecord
函数将返回一个需要首先解决的承诺。解决问题后,您应该能够获得用户。例如,以下内容将返回一个promise作为您的模型,该模型将解析为用户操作历史记录
// routes/comments.js
export default Route.extend({
model() {
return this.modelFor('application').then(p => p.get('user.actionHistory'));
}
});
请注意,您的comments控制器/模板将不会收到来自模型挂钩的承诺,因为ember将等待它首先得到解决
我记得,在最近的版本中,ember数据本身并不加载关系。我认为像
这样的返回this.store.findRecord('action-history',post.get('user')。get('actionHistory.id');
可能在您的case@GennadyDogaev是的,我只是做了一个findAll()对于操作历史,让它成为我的路由的模型,但我现在有点难过,我可以从一个路由加载一个关系,并将它传播到余烬存储,如果我需要它,而不需要从服务器获取:(你能展示你是如何加载用户的吗?你提供了相关链接吗?Ispost.get('user'))
实际返回的是用户模型的有效实例吗?您是否可以包含获取用户返回的有效负载?您是否使用JSON API?如果是,您是否使用?我假设这不是原因,否则您不会期望任何请求,不是吗?