关于这个主题的很多其他帖子已经有2年多了,所以这里提出了一个可能很简单的问题。
我正在使用Ember数据关系来拥有一个' bizinfo'记录属于'用户'记录。看似简单,但我遇到了最糟糕的时间。
在app / models / bizinfo.js中我有一行:
'ownedBy': DS.belongsTo('user')
在我的路线中,我验证然后保存模型,我有以下代码:
user_id: Ember.computed(function(){
return `${this.get('session.data.authenticated.user_id')}`;
}),
user: Ember.computed(function(){
return this.store.findRecord('user', this.get('user_id'));
}),
model(params){
return this.store.createRecord('bizinfo', {'ownedBy': this.get('user')});
},
此时如果我进入Ember检查员看看' bizinfo'数据对象,我在belongsTo选项卡下看到以下内容:
ownedBy : <(subclass of Ember.ObjectProxy):ember1053>
以下是我提交操作的代码:
submit() {
let model = this.currentModel;
console.log(model.ownedBy);
console.log(`what does the model look like?`);
console.log(model.toJSON());
model.validate().then(({model, validations}) => {
if (validations.get('isValid')) {
this.setProperties({
showAlert: false,
isRegistered: true,
showCode: false
});
let success = (response) => {
console.log(`Server responded with ${response.toJSON()}`);
};
let failure = (response) => {
console.log(`Server responded with ${response}`);
};
model.save().then(success, failure);
} else {
this.set('showAlert', true);
}
this.set('didValidate', true);
}, (errors) => {
console.log(`errors from failed validation: ${errors}`);
});
},
所以这是第一个console.log语句的结果:
ComputedProperty {isDescriptor: true, _dependentKeys: undefined, _suspended: undefined, _meta: Object, _volatile: false…}
当我查看model.toJSON()日志时,我看到了
ownedBy: null
谁能看到这里出了什么问题?是创建记录声明吗?我尝试了很多不同的排列(比如只提交id作为&#39; user&#39;参数。
答案 0 :(得分:2)
findRecord
将返回一个承诺。解决问题的一种简单方法是
model(params){
return this.store.findRecord('user', this.get('user_id')) .
then(ownedBy => this.store.createRecord('bizinfo', {ownedBy});
}
这将等待findRecord
解析,然后返回一条新记录,其中已解析的值为ownedBy
属性。