2

灰烬版本:3.23

余烬数据:3.23

links我想通过向资源关系中的对象中提供的 URL 发出请求来修补关系:

{
  "type": "appointments",
  "id": "1",
  "attributes": {},
  "relationships": {
    "status": {
      "links": {
        "self": "/api/appointments/1/relationships/status",
        "related": "/api/appointments/1/status"
      },
      "data": {
        "type": "statuses",
        "id": "1"
      }
    }
  }
}

鉴于上述情况,我想发出PATCH /api/appointments/1/relationships/status请求。

// model/appointment.js
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
export default class AppointmentModel extends Model {
  @belongsTo('status') status;
};
// model/status.js
import Model, { attr, hasMany } from '@ember-data/model';
export default class StatusModel extends Model {
  @hasMany('appointment') appointments;
  @attr('string') name;
}

我想做的是:

const appointment = this.store.findRecord('appointment', id);
appointment.status = newStatus;
return appointment.get('status').save();

然而,上面返回一个save() is not a function关于状态对象的错误(状态对象是一个 ember 代理对象)。

我知道我可以做到:

const status = this.store.peekRecord('status', appointment.get('status.id'));
return status.save();

但是不,这不是我想要的要求。这将向/api/statuses/1没有约会上下文的主要资源发出请求。

我也知道我可以保存约会并获取关系更新,但这会使links我设置的完全无用。我希望能够请求我为关系设置的链接。

本质上,我希望能够遵循 JSON:API 规范的这一部分:更新关系

如何save()向使用关系链接的关系发出请求?

4

0 回答 0