Ember.js将多对多关系保存到服务器
Ember.js saving many-to-many relations to server
我有一组名为Profile
和Tag
的模型。配置文件可以有许多标记,并且标记可以属于许多配置文件。我的模型是这样设置的:
App.Profile = DS.Model.extend({
name: DS.attr(),
tags: DS.hasMany('tag')
});
App.Tag = DS.Model.extend({
title: DS.attr(),
profile: DS.hasMany('profile')
});
我写了以下代码来测试关系并将数据提交给服务器:
var profile = this.store.createRecord('profile', {
name: 'John Doe'
});
var tag1 = this.store.createRecord('tag', {
title: 'Tag 1'
});
var tag2 = this.store.createRecord('tag', {
title: 'Tag 2'
});
var tag3 = this.store.createRecord('tag', {
title: 'Tag 3'
});
profile.get('tags').pushObject(tag1);
profile.get('tags').pushObject(tag2);
profile.get('tags').pushObject(tag3);
profile.save();
然而,关系永远不会发送到服务器,即使我先保存标签,然后保存配置文件。
无论Ember张贴到/profiles/
的数据是什么,都始终包含"tags": [ null, null, null ]
编辑:我用错误的方式保存了我的模型,这段代码对我有效:
profile.get('tags').save().then(function() {
profile.save();
});
保存配置文件时,会保存标记的名称和id。默认情况下,发送时不会将关系嵌入json中。它正在发送标签的id,这是空的。您需要首先保存标记(并且您的服务器需要返回一个id,通常它会返回带有id的整个模型)。然后,当您保存配置文件时,将发送ID。如果你只想硬编码几个来看看它是如何工作的,只需输入id即可。
var tag1 = this.store.createRecord('tag', {
title: 'Tag 1',
id:21838123823
});
话虽如此,如果您愿意,您可以创建一个自定义序列化程序来发送所有内容,但默认的rest适配器/序列化程序不是这样工作的。
相关文章:
- 将JQuery Handontable保存到服务器上的excel文件中
- 如何在服务器上保存数据以备日后使用
- 正在服务器上保存降价内容
- 将处理后的图像发送到服务器进行保存
- 从Div创建图像,并使用Javascript和ASP.net将其保存到服务器
- 保存服务器中的变量
- AngularJS可以在没有任何服务器端技术的情况下将文件保存/写入服务器
- 如何上传一个XML对象并用Perl将其保存在服务器上
- 解析服务器云代码保存对象
- Python在尝试保存新的JSON文件时导致服务器错误
- 将 JSON 数据保存到服务器上
- 在将图像保存到服务器之前检查图像大小
- 缺少用于创建的模板.内部服务器错误-聚合物表单保存到数据库
- 将多维Javascript数组保存到服务器端CSV
- 在drawImage、C#、AJAX、ASP.NET之后将图像从画布保存到Web服务器
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- Ember.js模型保存不向服务器发送数据
- 如何在asp中保存服务器中的更新完整日历事件
- 如何从 base64 数据 URI 在服务器端保存 PNG 图像
- 只保存服务器上更改的对象:Restful服务+angularjs