【发布时间】:2016-04-04 13:13:39
【问题描述】:
我有这个代码:
dogsResource.delete({id: $stateParams.dogId}, angular.noop,
function(value, responseHeaders){
//Success
console.log(value);
console.log(responseHeaders);
},
function(httpResponse){
//Error
console.log(httpResponse);
}
);
删除完成,问题是既没有调用成功也没有调用错误。我也尝试过使用实例(也就是说,使用 $delete),但它也没有工作。
我尝试使用其他方法测试回调,例如 get
$scope.dog = dogsResource.get({id: $stateParams.dogId}, function(value, res){
console.log(value);
});
而且它有效。我不知道为什么会这样,因为这只狗正在从数据库中删除。
谢谢
更新
dog资源代码
// Return the dogs resource
.factory('dogsResource', ['$resource', function($resource){
return $resource("http://localhost:5000/dogs/:id",{id: "@id"},{update: {method: "PUT"}});
}])
更新 2
我发现了错误。它在 RESTful API(Node js)中。该方法没有向 Angular 发送任何内容,因此没有触发回调:
//DELETE - Delete a dog with specified ID
exports.deleteDog = function(req, res) {
console.log('DELETE' + req.params.id);
Dog.findById(req.params.id, function(err, dog) {
dog.remove(function(err) {
if(err) return res.status(500).send(err.message);
console.log('Succesfully deleted.');
res.status(200);
})
});
};
将res.status(200) 替换为res.status(200).end() 触发了回调。
感谢大家的宝贵时间。
【问题讨论】:
-
我知道这听起来很明显,但 angular.noop 应该存在吗?
-
@camden_kid 文档说非 http get 操作应该有一个 postData,我不需要那个。顺便说一句,我也尝试过使用 null、{} 甚至忽略它。
-
是的,根据stackoverflow.com/questions/16579201/…,你是对的。控制台有错误吗?
-
无,如我所说,删除完成,但不打印日志。
-
你试过使用 promise 属性吗?像这样
dogsResource.delete({id: $stateParams.dogId}).$promise.then(function(value) { console.log('value', value)});