Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 Emberjs:未发送多对多Json参数_Javascript_Ruby On Rails_Json_Ember.js_Ember Data - Fatal编程技术网

Javascript Emberjs:未发送多对多Json参数

Javascript Emberjs:未发送多对多Json参数,javascript,ruby-on-rails,json,ember.js,ember-data,Javascript,Ruby On Rails,Json,Ember.js,Ember Data,ember cli 1.13.8 余烬数据1.13.11 ActiveModelAdapter 我有两个对象:post和users。我在一个单独的帖子页面上有一个操作,允许用户观看/关注帖子 //post model js watchedUsers: DS.hasMany('user', { inverse: 'watchedPosts', async: true }); //user model js watchedPosts: DS.hasMany('post', {inverse: 'w

ember cli 1.13.8

余烬数据1.13.11

ActiveModelAdapter

我有两个对象:post和users。我在一个单独的帖子页面上有一个操作,允许用户观看/关注帖子

//post model js
watchedUsers: DS.hasMany('user', { inverse: 'watchedPosts', async: true });

//user model js
watchedPosts: DS.hasMany('post', {inverse: 'watchedUsers', async: true });

//action after clicking button
action: {
    addToWatchlist(post) {
        //session.current user is declared in an initializer that lets us access the current user easily
        post.get('watchedUsers').pushObject(this.get('session.currentUser'));

        post.save().then(function() {
            console.log('post save success');
        }, function() {
            console.log('post save fail');
        }
    }
}   
单击follow按钮后,在ember inspector中,我看到属性watchedUsers用于发布模型更新,watchedPosts用于发布用户模型更新。刷新时,这些值将消失。有了这个,我认为pushObject函数本身就可以了

当查看我的
PUT
请求到我的后端以保存post模型时,它不包含
wasted\u user\u id
的json条目。(所以它没有被拯救,duh)我相信这是我的主要问题


我已经在我的rails后端中植入了可以在ember端查看/访问的数据,因此我知道json是可以通过一种方式访问的。余烬数据还不支持多对多吗?是否有什么特殊的事情需要我去发送/保存JSON来实现多对多关系?< /P> < P>我能够解决这个问题,但是在POST和用户中间使用一个“监视列表”对象来表示它们的多对多关系。后端/rails端使用多对多:through,而不是has并属于many。似乎余烬数据不发送json,因为它有很多属性,这是我的主要问题

以下是最终的解决方案:

//models/user.js
export default DS.Model.extend({
     watchlists: DS.hasMany('watchlist', { async: true })
});

//models/post.js
export default DS.Model.extend({
     watchlists: DS.hasMany('watchlist', { async: true })
});

//models/watchlists.js
export default DS.Model.extend({
    user: DS.belongsTo('user', { async: true }),
    listing: DS.belongsTo('listing', { async: true }),
});

//action in a route.js
actions: {
    addToWatchlist(post) { //component sends the specific post using sendAction
        var newWatchlist = this.store.createRecord('watchlist', {
            user: this.get('session.currentUser'), //current user stored in session object
            post: post
        });
        newWatchlist.save();
    }
}

如果您查看请求主体,是否有一个监视的用户数组正在填充ID?不,除了我的多对多属性之外,所有内容都在发送