Javascript Emberjs:未发送多对多Json参数
ember cli 1.13.8 余烬数据1.13.11 ActiveModelAdapter 我有两个对象:post和users。我在一个单独的帖子页面上有一个操作,允许用户观看/关注帖子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
//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?不,除了我的多对多属性之外,所有内容都在发送