我在使用Ember Data Fixture Adapter时遇到了问题。当保存记录时,所有记录的hasMany关联都会丢失。我创建了一个简单的JS Bin来说明这个问题:http://jsbin.com/aqiHUc/42/edit
如果您编辑任何用户并保存,所有项目都会消失。
这是使用Ember 1.0.0和最新的Ember Data金丝雀版本构建的。
我不确定我是否做错了什么,还是这是Ember Data的问题。
谢谢
我在使用Ember Data Fixture Adapter时遇到了问题。当保存记录时,所有记录的hasMany关联都会丢失。我创建了一个简单的JS Bin来说明这个问题:http://jsbin.com/aqiHUc/42/edit
如果您编辑任何用户并保存,所有项目都会消失。
这是使用Ember 1.0.0和最新的Ember Data金丝雀版本构建的。
我不确定我是否做错了什么,还是这是Ember Data的问题。
谢谢
DS.JSONSerializer.serializeHasMany
似乎只处理和序列化manyToNone 和manyToMany的关系类型。你可以通过为模型使用自定义序列化程序来覆盖此行为。var get = Ember.get;
App.UserSerializer = DS.RESTSerializer.extend({
serializeHasMany: function(record, json, relationship) {
var key = relationship.key;
var relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship);
if (relationshipType === 'manyToNone' || relationshipType === 'manyToMany' || relationshipType === 'manyToOne') {
json[key] = get(record, key).mapBy('id');
}
}
});
我还不确定这是一个漏洞还是期望的/预期的行为。
我遇到了同样的问题,采用了同样的解决方案。这难道不是ember-data的一个bug吗?
这是我的解决方案,唯一的区别是我修改了JSONSerializer,而不是扩展RESTSerializer,因为我使用本地存储适配器:
DS.JSONSerializer.reopen({
serializeHasMany : function(record, json, relationship) {
var key = relationship.key;
var relationshipType = DS.RelationshipChange.determineRelationshipType(
record.constructor, relationship);
if (relationshipType === 'manyToNone'
|| relationshipType === 'manyToMany'
|| relationshipType === 'manyToOne') {
json[key] = Ember.get(record, key).mapBy('id');
// TODO support for polymorphic manyToNone and manyToMany
// relationships
}
}
});
attrs: {someRelationship: {serialize: 'ids'}}
。record.constructor.determineRelationshipType(relationship)
这将显示您的关系类型。