使用下面的模式,我可以使用闭包动作将路径中的保存操作的结果返回给组件。这很好。
路线
actions: {
submit: function(values) {
var user = this.store.createRecord('user', values);
return user.save();
},
}
组件
this.attrs.submit(values).then((response) => {
//Handle success
}).catch(error => {
//Handle error
});
在我的提交操作中,我想首先获取用户所属的许可对象,然后在保存之前在用户对象上设置该对象,如下所示。
问题是return user.save();
现在处于查询操作的回调中,并且没有从提交操作返回。
如何重构我的代码以便查询许可证记录,然后将user.save()
的结果返回给我的组件?
submit: function(values) {
var user = this.store.createRecord('user', values);
this.get('store').query('license', {
filter: {
code: values.licenseCode
}
}).then(function(licenses) {
var license = licenses.get("firstObject");
user.set('license', license);
return user.save();
});
},
答案 0 :(得分:0)
无需重组。获取回调结果的then
method already does this magic。你只需要回复它给你的承诺:
submit: function(values) {
var user = this.store.createRecord('user', values);
return this.get('store').query('license', {
//^^^^^^
filter: {
code: values.licenseCode
}
}).then(function(licenses) {
// ^^^^^
var license = licenses.get("firstObject");
user.set('license', license);
return user.save();
// ^^^^^^
});
},