如何在EmberJs中保存has_many其他记录的记录

时间:2014-11-18 17:33:57

标签: asynchronous ember.js coffeescript many-to-many ember-data

请你能帮助我。

我有一个模特A:

A = DS.Model.extend
  title: DS.attr('string')
  bs:    DS.hasMany('b', {async: true})
`export default A'

和模型B:

B = DS.Model.extend
  title: DS.attr('string')
  as:    DS.hasMany('a', {async: true})
'export default B'

我似乎无法用一些Bs保存A. 我尝试过在SO或互联网上找到的不同的东西。 但我完成的最好的事情是在没有B的情况下获得A。

someB = here exists loaded from server

a = @store.createRecord 'a', {
  title: 'sth'
}

a.save().then((a) ->
  a.get('bs').then((bs) ->
    bs.pushObject(someB)
    a.save()
  )
  # i tried with a.save() here as well
)

所以A得到了保存,但是当我想用bs保存A时,在我的服务器上使用a {/ 1}}在{bs: [someID]}上进行PUT / PATCH

1 个答案:

答案 0 :(得分:0)

我已经成功地使其发挥作用,但它是黑客的,所以如果有人知道更好的解决方案请帮助。

a.save().then((a)=>
  a.get('bs').then((bs)=>
    bs.pushObjects(someBs)

    a.save()
  ).then((a)=>
    a.save()
  )
)

正如你所看到的那样,有许多保存,但这是唯一有效的方法。首先保存发送到服务器bs:nil,第二个发送bs:[someBID,someOtherBID,...]