将 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 请求返回的字段以及 save
、put
等方法等等
如果我在对 $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 对象)。
我正在使用 Restangular 下载一个对象,更新它,然后尝试使用 save
方法保存回服务器。这是检索对象的代码:
Restangular.one("survey", surveyID).getList().then (
function (response) {
$scope.survey = response[0];
}
);
这会将 $scope.survey
设置为正确的 "restangularized" 对象,其中包含从 GET 请求返回的字段以及 save
、put
等方法等等
如果我在对 $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 对象)。