Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember.js将多对多关系保存到服务器_Javascript_Ember.js_Ember Data - Fatal编程技术网

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适配器/序列化程序不是这样工作的