似乎当我在我的资源上保存或使用自定义$ update(put或post)方法时,它希望返回新发布的文档。我不想从我的保存/后期操作中返回任何内容但是返回ok / 200 /错误类型的语句,但这样做会导致项目在保存后立即为空。
var item = Things.get({
id: $route.current.params.id
}, function() {
console.log(item); // Item is ok
});
var item = Things.get({
id: $route.current.params.id
}, function() {
console.log(item); // Item is blank (because server returned just 'ok')
item.$save();
});
答案 0 :(得分:2)
当您执行$save()
时,会有一个validation来检查是否有任何数据被返回,如果是这样的话,响应将是copied到原始对象(在你的案件item
)
这是从服务器接收响应时的回调:
var promise = $http(httpConfig).then(function(response) {
var data = response.data,
promise = value.$promise;
if (data) {
// Need to convert action.isArray to boolean in case it is undefined
// jshint -W018
if (angular.isArray(data) !== (!!action.isArray)) {
throw $resourceMinErr('badcfg', 'Error in resource configuration. Expected ' +
'response to contain an {0} but got an {1}',
action.isArray?'array':'object', angular.isArray(data)?'array':'object');
}
// jshint +W018
if (action.isArray) {
value.length = 0;
forEach(data, function(item) {
value.push(new Resource(item));
});
} else {
shallowClearAndCopy(data, value);
value.$promise = promise;
}
}
value.$resolved = true;
response.resource = value;
return response;
}, function(response) {
value.$resolved = true;
(error||noop)(response);
return $q.reject(response);
});
您可以查看完整源代码here
因此,如果您不想覆盖您的对象,那么就不要从服务器发送有关响应的任何数据。
答案 1 :(得分:0)
如果您的服务器返回204(无内容),则一旦保存完成,它将无法替换资源。