首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多到多关系的数据奇怪行为

多到多关系的数据奇怪行为
EN

Stack Overflow用户
提问于 2014-01-21 08:20:31
回答 1查看 136关注 0票数 1

我正试图在Ember实现一个朋友系统,这是一种多到多的关系。我的模特是:

代码语言:javascript
运行
复制
App.User = DS.Model.extend
  name: DS.attr('string')
  friendships: DS.hasMany('friendship', { inverse: 'user' })

App.Friendship = DS.Model.extend
  user: DS.belongsTo('user')
  friend: DS.belongsTo('user')

在我的用户控制器中,我有一个大致如下所示的addFriend操作(我从其他地方定义了currentUser ):

代码语言:javascript
运行
复制
App.UserController = Ember.ObjectController.extend
  actions:
    addFriend: ->
      friendship = @get('store').createRecord('friendship', 
        user: @get('currentUser')
        friend: @get('model')
      )
      @get('currentUser.friendships').pushObject(friendship)

从调试语句来看,friendship记录似乎被推入friendships数组-- currentUser和由model表示的用户。我不希望这种情况发生,因为对于双向交友系统,model.friendship数组应该包含与friendship相反的内容,即与用户和朋友交换。当然,如果Ember有办法自动完成这个任务,那就太好了,但是我也非常乐意手动完成。

现在,为什么pushObject方法将相同的friendship记录推入两个用户记录?我想这可能与在模型中定义逆的方式有关。我试着改用inverse: null,但这并没有解决问题。什么是发生在引擎盖下的余烬-数据是导致这一行为?或者,我的代码中是否有我没有看到过的bug?任何摆脱这种行为的方法都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 03:41:15

解决了!结果发现我需要

代码语言:javascript
运行
复制
App.Friendship = DS.Model.extend
  user: DS.belongsTo('user')
  friend: DS.belongsTo('user', { inverse: null })

我的直觉是正确的,答案与反向有关,但我一开始并没有把inverse: null放在正确的位置!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21252660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档