当相关数据以0-1关系序列化时,一切正常。
"lesson": {
"id": 1,
"title": "foo",
"user_completion": {
"id": 1,
"percent": 30
},
"is_available": true
}
但是,当尚未创建相关模型时,Web服务将为该关系返回null。
"lesson": {
"id": 1,
"title": "foo",
"user_completion": null,
"is_available": false
}
看来,当使用此数据实例化ember模型时,user_completion将变为 PromiseObject 。
在需要检查相关数据是否存在的情况下,我应该怎么做,如下例所示?
model.filter(function(item) {
return item.get('is_available') || item.get('user_completion') !== null;
});
我真的只需要检查user_completion是否是PromiseObject?这看起来有点奇怪,我觉得我在其他地方犯了错误。
答案 0 :(得分:5)
经过一番调查后发现,如果你的关系定义为async,那么总是会返回一个承诺,无论你是否内联关系。
更改
user_completion: DS.belongsTo('user_completion', {async: true})
到
user_completion: DS.belongsTo('user_completion', {async: false})
一切都按预期工作; Ember返回null
表示空关系。
对于它的价值,它看起来像async: true
may become the default in future。