我有一个带有json api约定的findRecord方法,如下所示:
this.store.findRecord('book', 2).then((book) =>{
console.log(book.get('name'));
});
控制台日志始终打印undefined
,但名称值实际上正在发送。 book
仅返回id
,仅此而已。我和Ember一起测试过。$ ajax我得到了一切。模型结构也是正确的。
这是正常行为吗?这让我疯了好几个小时...... 感谢。
修改
工作片段:
Ember.$.getJSON('http://api.xxxxx.com/v1/books/' + id).then((book) => {
console.log(book.get('name'));
});
EDIT2:
书籍型号:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { hasMany } from 'ember-data/relationships';
export default Model.extend({
name: attr('string'),
year: attr('number'),
authors: hasMany('author')
});
答案 0 :(得分:2)
如果传递 {reload:true} 或者apply.shouldReloadRecord的计算结果为true,那么一旦适配器返回数据,返回的promise就会解析,无论请求的记录是否已经存储在商店中:
this.store.findRecord('book', 2, {reload: true}).then((book) =>{
console.log(book.get('name'));
});
参考:https://emberjs.com/api/ember-data/2.16/classes/DS.Store/methods/findRecord?anchor=findRecord