我有一个meeting
和一个sales-rep
模型,关系是ManyToMany。
问题是,当我想创建一个新会议,并将现有salesReps分配给它时(它们已经保存到商店),但是salesReps IDS不包括在由post
引起的model.save()
动作中{1}}(甚至不是一个空数组),为了使它更清晰,这是我的代码的样子:
meeting.coffee:
Meeting = DS.Model.extend
client: DS.belongsTo('client')
salesReps: DS.hasMany('sales-rep')
memo: DS.attr('string')
startDate: DS.attr('date')
duration: DS.attr()
sales-rep.coffee:
SalesRep = DS.Model.extend
meetings: DS.hasMany('meeting')
firstName: DS.attr('string')
lastName: DS.attr('string')
title: DS.attr('string')
meeting / new.coffee(我在新会议控制器中使用的保存操作):
save: ->
meeting = @get('model')
meeting.set('client', @get('client'))
meeting.get('salesReps').pushObjects(@get('salesReps.content'))
meeting.save().then =>
@transitionToRoute 'meetings'
JSON有效负载:( POST http://localhost:4200/api/meetings)
meeting: {memo: null, start_date: null, duration: "00:15", client_id: null}
client_id: null
duration: "00:15"
memo: null
start_date: null
无论如何,有效载荷中没有任何salesReps id的痕迹!!
到目前为止我尝试了什么:
仅在会议模型中设置hasMany关系。
在SalesRep和And上设置{async:true},然后设置{async:false} 然后在其中一个
花了将近2天的谷歌搜索和阅读所有相关的帖子在这里 没有运气
任何帮助/提示/建议,非常感谢
答案 0 :(得分:0)
我会在无休止的阅读和研究之后写出我找到的解决方案,我会写完全详细信息,以及我经历过的试验/失败,因为没有人,没有人能够应该花了3天以上的时间试图解决类似的事情!!
我正在使用Ember-cli,所以,下面有一个文件/目录结构:
首次尝试:
尝试async: true, embedded true
的所有组合以及不是app/serializers/
的所有组合。
结果,没有运气
第二次尝试:
在`import DS from "ember-data"`
`import Ember from "ember"`
`import config from '../config/environment'`
get = Ember.get
serializer = DS.RESTSerializer.extend
serializeHasMany: (record, json, relationship) ->
rel_ids = get(record, relationship.key).map (rel) -> get(rel, 'id') || []
json["#{relationship.key.underscore().singularize()}_ids"] = rel_ids
json
`export default serializer`
中我添加了以下序列化文件:
meeting.coffee
sales_rep_ids:[]
<强>结果:强>
添加此序列化程序,我终于能够将salesReps
数组发送到控制器了!我可以确认服务器正在根据需要保存协议。
但是,在列出会议时,我无法列出关联的app/serializers/meeting.coffee
,所以,我检查了从服务器获取的JSON,这是正确的(包括salesReps ID!)但仍未列出在Ember
第三次尝试:
经过更多的阅读和无尽的头撞击墙,改变一行解决了问题!:
serializer = DS.RESTSerializer.extend
中的
将serializer = DS.ActiveModelSerializer.extend
更改为
{{1}}
而且瞧!保存到后端,并将正确的列表作为ember中的关联列出!
这个解决方案是3 +持续头痛的结果,我在这里发布希望它可能对面临同样问题的人有帮助,我不能声称这是我自己的解决方案,但是,这是阅读许多的结果人们的代码。
我不确定这是否是Ember方式,所以,欢迎任何建议,改进想法和想法。