Ember数据相关键未定义

时间:2016-03-30 22:50:06

标签: ember.js ember-data

关于这个主题的很多其他帖子已经有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;参数。

1 个答案:

答案 0 :(得分:2)

findRecord将返回一个承诺。解决问题的一种简单方法是

model(params){
  return this.store.findRecord('user', this.get('user_id')) .
    then(ownedBy => this.store.createRecord('bizinfo', {ownedBy});
}

这将等待findRecord解析,然后返回一条新记录,其中已解析的值为ownedBy属性。