如何在Ember.js中保存具有多对多关系的模型
How to save models with many-to-many relationship in Ember.js?
我被这个问题困扰了很长时间,我认为我错过了一些显而易见的东西。以下是我案例的简化模型:
Patient
有他/她服用的所有药物。还有Medicine
,它有所有服用它的病人
// Patient model
Yo.Patient = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
meds: DS.hasMany('medicine')
});
// Medicine model
Yo.Medicine = DS.Model.extend({
title: DS.attr('string'),
patients: DS.hasMany('patient')
});
我已经阅读了官方手册和许多资源。最后一个也是最接近我的案例是这个Toptal教程。我现在要做的是:
- 在保存新患者之前,我将
Medicine
对象的数组推送到newPatient.meds
- 然后我保存
newPatient
保存完成后,我将遍历
Medicine
对象的数组,将newPatient
推送到每个对象并保存每个对象。newPatient.get('meds').pushObjects(meds); newPatient.save().then(function (p) { for (var i = 0; i < meds.length; i++) { meds[i].get('patients').pushObject(p); meds[i].save(); }; });
但结果并不是它想要的
- 获救的病人没有任何药物。在
POST
中,对服务器meds
的请求是空数组 - 每个保存的药物在
patients
中都有患者id。但它总是在数组的零位上有CCD_ 11
此外,在StackOverflow上也存在类似的问题。但解决方案并不是很有用。答案是1.5岁,这是Ember世界的永恒。
编辑Josh RecordArray
在评论中提出的建议现在不能用于我的情况。也许可以,但我不知道怎么做。我有一个创建新病人的表格。有药物复选框列表。所以我只需要将选中的推送到newPatient.meds
。
我现在要做的是:获取选中复选框的id(等于对应的对象id),然后为每个id获取Medicine
实例并将其放入数组中。然后我试着把它推到"newPatient.meds"中。
您应该使用序列化程序来解决这个问题。以下是您的问题
相关文章:
- Ext.js从json构建模型关系的问题
- 骨干关系中的链接模型
- 在Knockout.js模型中创建项之间的关系
- 使用茉莉花测试主干关系模型
- 当一个模型在骨干关系中被销毁时,销毁相关模型的最佳方法是什么?
- 在这种情况下,我应该如何在余烬中放置我的模型有很多关系
- Ember.js:如何表示一个有多个模型的关系
- 如何通过关系处理特定于父级的模型值
- 为什么没有将关系添加到模型中的 loopback.io 对象中
- 响应骨干关系中的类别模型更改
- Ember.js RESTful 模型关系
- 帆.js:模型本身的一对多关系
- 如何处理嵌套在关系模型中的集合
- 从另一个具有属于关系的模型访问模型属性 Ember.js
- 余烬.js有许多模型关系保存
- ExtJS 5:父模型转换对子关联的依赖关系
- 嵌套模型上的主干关系
- 我需要在两个模型(rails)之间创建一个新关系,然后通过javascript更改关系模型的属性
- Backone 关系子模型类型
- 向javascript提供模型及其关系模型