Emberjs:很多很多Json Param没有被送出

时间:2015-09-14 01:09:37

标签: javascript ruby-on-rails json ember.js ember-data

ember-cli 1.13.8

ember-data 1.13.11

ActiveModelAdapter

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

//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');
        }
    }
}   

在点击跟随按钮后的ember检查器中,我看到postched模型更新的属性watchedUsers,以及用户模型更新的watchedPosts。刷新时,值会消失。有了这个,我认为pushObject函数本身很好。

查看我的后端的PUT请求以保存帖子模型时,它不包含watched_user_ids的json条目。 (所以它没有被保存,呃)我相信这是我的主要问题。

我在我的rails后端播种了数据,我可以在ember端看到/访问,所以我知道json可以通过一种方式访问​​。 ember-data不支持多对多吗?有什么特别的东西要发送/保存json用于多对多的关系吗?

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题,但是在Post和User中间使用了一个'watchlist'对象来表示他们的多对多关系。后端/轨道侧面完成了多对多:通过,而不是有和属于许多。似乎Ember Data不会为HasMany属性发送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();
    }
}