【问题标题】:Ember data stripping hasMany relationshipEmber 数据剥离 hasMany 关系
【发布时间】:2014-08-05 12:55:34
【问题描述】:

我对此感到很痛苦,但我在控制器上执行了以下操作:

saveOrganization: function() {  
  var org = this.get('model');
  var users = org.get('users').then(function() {
    console.log(org); //users are a part of org
    org.save(); //users are not sent to server
  });
}

及相关的组织模式:

export default DS.Model.extend({
  createdAt: DS.attr('date'),
  updatedAt: DS.attr('date'),
  name: DS.attr('string'),
  address: DS.attr('string'),
  city: DS.attr('string'),
  state: DS.attr('string'),
  zip: DS.attr('string'),
  users: DS.hasMany('user',{async:true}),
  totalUsers: function() {
    return this.get('users').get('length');
  }.property('users.@each')
});

和相关的用户模型:

export default DS.Model.extend({
    createdAt: DS.attr('date'),
    updatedAt: DS.attr('date'),
    name: DS.attr('string'),
    email: DS.attr('string'),
    bio: DS.attr('string'),
    picture: DS.attr('string'),
    organization: DS.belongsTo('organization'),
    type: DS.attr('string'),
    username: DS.attr('string'),
    password: DS.attr('string')
});

正如您从 cmets 中看到的,当我将 users 数组作为组织的一部分时,我可以看到数据,但是当我保存它时,ember 数据永远不会将 users 数组作为发送到的数据的一部分发送到服务器。

谁能帮我弄清楚可能发生了什么?

谢谢。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    堆栈溢出不会让我将其标记为Serialize ids when saving emberjs model 的欺骗,但确实如此。 Ember Data 在这方面是愚蠢的,如果是 ManyToOne 关系,它只包含来自belongsTo 端的 id。

    https://github.com/emberjs/data/commit/7f752ad15eb9b9454e3da3f4e0b8c487cdc70ff0#commitcomment-4923439

    App.ApplicationSerializer = DS.RESTSerializer.extend({
    
     serializeHasMany: function(record, json, relationship) {
        var key = relationship.key;
        var payloadKey = this.keyForRelationship ? this.keyForRelationship(key, "hasMany") : key;
        var relationshipType = RelationshipChange.determineRelationshipType(record.constructor, relationship);
    
        if (relationshipType === 'manyToNone' || relationshipType === 'manyToMany'
            || relationshipType === 'manyToOne') {  // This is the change
          json[payloadKey] = get(record, key).mapBy('id');
          // TODO support for polymorphic manyToNone and manyToMany relationships
        }
      },
    });
    

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多