Restangular put丢失了部分网址

时间:2014-06-17 11:46:09

标签: angularjs rest restangular

我想在客户端使用Restangular通过REST API修改一个对象。我做了以下事情:

Restangular.setBaseUrl('/api/v1');
return Restangular.one('lists', item.listId).one('items',item.order).get().then(function(elem) {
    elem.text = item.text;
    elem.put();
});

但是put方法获取的错误URL错过了最后一个成员(item.order)的ID。

预期网址为/lists/2/items/22,但我得到/lists/2/items且PUT失败。

我可能做错了什么?

1 个答案:

答案 0 :(得分:3)

好的,让我试一下理论:)

我上面的评论有点蹩脚,因为我专注于代码的第一部分,而不是put()

第一部分是完美的,你告诉Restangular使用one()方法构建URL,并且GET请求必须非常好。

然后,基于一个新的Restangular-aware对象,您尝试在API中保留更改。 但是,我认为Restangular实际上并不知道要将哪个字段用作id,以便为elem对象构建正确的查询。

您是否尝试在Restangular Entity Provider中配置fields属性?

RestangularProvider.setRestangularFields({
   id: "orderId",
});

我相信将正确的字段指定为 id 就足够了。

作为奖励,如果.save()是新对象,{{1}}似乎会使用PUT或POST。

希望这有帮助