我有一个可怕的时间,但我有一个控制器上的以下动作:
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')
});
正如您从注释中看到的,当我将用户数组作为组织的一部分时,我可以看到数据,但是当我保存它时,ember data从未将用户数组作为发送到服务器的数据的一部分发送。
谁能帮我弄清楚发生了什么事?谢谢。
Stack over flow不会让我在保存emberjs模型时将其标记为Serialize id的副本,但它确实是。Ember Data在这方面是愚蠢的,如果它是一个多对一的关系,它只包括来自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
}
},
});