gpt4 book ai didi

javascript - 如何在 Ember.js 中保存具有多对多关系的模型?

转载 作者:行者123 更新时间:2023-11-30 05:32:28 24 4
gpt4 key购买 nike

我被这个问题困扰了很长时间,以至于我认为我遗漏了一些明显的东西。这是我的案例的简化模型:

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 tutorial .这是我现在所做的:

  1. 在拯救新患者之前,我将 Medicine 对象数组推送到 newPatient.meds
  2. 然后我保存 newPatient
  3. 保存完成后,我将遍历 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();
    };
    });

但结果并不是它的本意。

  1. 被救的病人没有任何药物。在 POST 请求服务器 meds 是空数组。
  2. 保存的药物在 patients 中都有患者 ID。但它总是在数组的零位置有 null

也已经有类似的question在 StackOverflow 上。但是解决方案不是很有用。答案是 1.5 岁,这在 Ember 世界中是永恒的。

编辑Josh RecordArray 在评论中提出的建议现在不能用于我的案例。或者也许可以,但我不知道怎么做。我有一个用于创建新患者的表格。有药物复选框列表。所以我只需要将选中的推送到 newPatient.meds

我现在做什么:我获取选中复选框的 ID(等于相应的对象 ID),然后为每个 ID 获取 Medicine 实例并将其放入数组中。然后我尝试将其推送到“newPatient.meds”中。

最佳答案

您应该使用序列化器来解决这个问题。 Here是你问题的答案

关于javascript - 如何在 Ember.js 中保存具有多对多关系的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com