Javascript Ember.js将多对多关系保存到服务器
我有一套名为Javascript Ember.js将多对多关系保存到服务器,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有一套名为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') }); 我编写了以下代码来测试关系并将数
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/
的数据是什么,它总是包含“标记”:[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适配器/序列化程序不是这样工作的。保存配置文件时,它会保存标记的名称和id。默认情况下,发送时关系不会嵌入到json中。它正在发送标签的ID,它是空的。您需要首先保存标记(并且您的服务器需要返回一个id,通常它会返回带有id的整个模型)。然后,当您保存配置文件时,将发送ID。如果你只是想硬编码一对夫妇,看看它是如何工作的,只要把id
var tag1 = this.store.createRecord('tag', {
title: 'Tag 1',
id:21838123823
});
尽管如此,您可以创建一个自定义序列化程序,如果需要,它可以发送所有内容,但默认的rest适配器/序列化程序不是这样工作的