将 save 或 put 与 Restangular 一起使用会导致 "undefined" 包含在 URL 中

Using save or put with Restangular results in "undefined" being included in URL

我正在使用 Restangular 下载一个对象,更新它,然后尝试使用 save 方法保存回服务器。这是检索对象的代码:

Restangular.one("survey", surveyID).getList().then (
  function (response) {
    $scope.survey = response[0];
  }
);

这会将 $scope.survey 设置为正确的 "restangularized" 对象,其中包含从 GET 请求返回的字段以及 saveput 等方法等等

如果我在对 $scope.survey 对象进行一些编辑后调用以下函数:

$scope.saveChanges = function () {
  $scope.survey.save();
};

restangular 尝试将 URL /survey/1/undefined 用于 PUT 请求(1 是对象的正确 ID)。

我的 survey 对象没有 id 字段(而是 surveyID),所以我怀疑这可能是问题所在。但是,将 surveyID 字段替换为 id 字段会将 URL 更改为 /survey/1/undefined/1

我已将 GET 请求返回的对象剥离为原始对象,这不会改变情况。

为什么生成的路线不正确?

我发现问题其实出在REST服务上;当使用 GET /surveys/1 调用时,它返回一个 数组 ,其中包含一个对象,而不是返回对象本身。

我认为这导致 restangular 认为正在访问一个集合(请注意,我必须调用 getList 而不是 get 才能获得正确的 restangularized 对象)。