有没有办法根据相关ID进行一些过滤?想象一下,我有2个模型,一个是歌曲模型,另一个是专辑模型,所以很明显这首歌有id的专辑,json将返回模型
{album: 1}
所以,如果我想过滤它,似乎我无法将相册ID与
相比较song.get('album.id') === 1
有没有办法这么简单?
由于
编辑:模型
App.Album = DS.Model.extend({
irrelevantstuff: DS.attr(),
songs: DS.hasMany('Song')
})
App.Song = DS.Model.extend({
irrelevantstuff: DS.attr(),
album: DS.belongsTo('Album')
})
我尝试使用{async:true}
并且没有,但仍然存在同样的问题。
然而我注意到,如果我第一次运行它,它会给我所有的相册都没有定义。但如果我第二次运行它,我会得到ID,现在我在商店里有所有东西,所以它&#39 ; s不是第一次或第二次做AJAX请求。
{"songs": [{"irrelevantstuff":"foo", "album": 1}, {"irrelevantstuff":"bar", "album": 1}]}
{"albums": [{"irrelevantstuff":"album", "songs": [1,2]}]
答案 0 :(得分:1)
关系应该是camelCase
App.Album = DS.Model.extend({
irrelevantstuff: DS.attr(),
songs: DS.hasMany('song', {async: true})
})
App.Song = DS.Model.extend({
irrelevantstuff: DS.attr(),
album: DS.belongsTo('album', {async: true})
})
由于您的关系数据未在歌曲/专辑的请求中出现,因此将被视为异步。因此,如果你想访问它,你需要使用异步方法,承诺。
var songPromise = this.store.find('song', 1);
songPromise.then(function(song){
var albumPromise = song.get('album');
albumPromise.then(function(album){
// the album is available for usage....
if(album.get('id') == 1){
alert('woo hoo');
}
});
});