有人知道我该怎么办?
所以,我在我的控制器中执行以下代码:
this.get('newEvent').save();
它获取我的数据并将其发送到服务器。这是一些数据
请求网址:http://localhost:1337/api/v1/events/53a9cfee701b870000dc1d01
要发送的数据:
event:{
date: "Mon, 18 Aug 2014 07:00:00 GMT"
host: "Host"
repeatable: true
title: "Event name"
}
但是为了成功,我需要知道我的服务器上的模型ID,它通常包含在我发送的event
对象中。你知道任何解决方案吗?顺便说一句,DELETE请求不会从id
对象中排除event
答案 0 :(得分:1)
您可以通过覆盖RestAdapter中的updateRecord挂钩轻松覆盖保存行为以包含ID:https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L457以与includeId: true
相同的方式传递{{1}} https://github.com/emberjs/data/blob/master/packages/ember-data/lib/adapters/rest_adapter.js#L436
答案 1 :(得分:0)
有几种方法可以解决这个问题,这取决于个人偏好。但我建议更改后端代码以从URL中提取ID。通常在定义put请求时,就像/ events /:event_id一样。如果您在后端以这种方式执行此操作,则无需将其发送到您发送的事件对象中。
API / V1 /活动/的 53a9cfee701b870000dc1d01 强>
您可以通过查看发送过的URL参数在服务器上捕获此信息。如果您在后端使用Express,则可以毫不费力地直接从URL获取ID。我还没有发表评论,但让我知道你的后端结构,我可以指出你正确的方向。可能包括您在后端编写的PUT请求作为参考点。
你可以做的另一件事(不推荐,但会起作用)是在保存之前存储一个临时id。
var id = this.get('newEvent');
this.get('newEvent').set('temp_id', id).save();
然后您可以访问服务器调用上的temp_id,而无需检查服务器调用上的param_id。