【问题标题】:Ember data dependent keys undefinedEmber 数据相关键未定义
【发布时间】:2016-03-30 22:50:06
【问题描述】:

关于这个主题的许多其他帖子都有 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 作为 'user' 参数。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

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

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

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

    【讨论】:

    • 哇哦!你是救生员虎先生。 m(_ _)m
    猜你喜欢
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多