- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有这个代码:
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()
触发了回调。
谢谢大家的宝贵时间。
最佳答案
我建议你不要使用
res.status(200).end()
事实上,通常当你在 expressJS 中使用 REST 服务删除一个对象时,常见的情况是将删除的对象作为响应发送,因为前端获取这个对象可能很有用(并确保它是好对象)。
所以不用
res.status(200).end()
使用
res.send(dog)
或者如果你想发送一个空响应,删除操作的状态代码应该是:
res.status(204).end()
204 NO CONTENT
请注意,您不需要设置状态码,默认情况下它是 200。因此将状态码设置为 200 是没有用的。
要完成,需要发送一个 http 响应来关闭请求。 end 方法或 send 方法可以做到这一点。将状态代码设置为响应 http 永远不会向前端发送任何内容。这就是为什么您的 Angular 回调从未被触发的原因。
所以我建议您将标签 expressjs 添加到您的问题中,因为这不是 AngularJS 问题而是真正的 expressJS 错误。
关于AngularJS ngResource 删除事件不调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34531610/
是否可以向 ngResource 添加虚拟属性? 我创建了这样的服务 app.factory('Person', ['$resource', function($resource) { retur
我正在尝试像这样将 ngResource 安装到工厂中: 'use strict'; var DTapp = angular.module('DeviceTraining'); /* Services
我下面有一个简单的工厂,它请求带有一些位置信息的 json 对象。请求有效,我可以看到数据位于对象中。但不知何故存在范围问题。即使我知道该对象具有该属性和正确的数组,我也无法访问该对象的属性。 您可以
我正在运行此代码来运行 REST 请求 app.factory('GetValidationsService', function($resource) { return $resource(
有哪些选项可以解析 ngResource 响应中的嵌套资源? 有一些关于在 ngResource 中解析嵌套资源的端点的相关问题,但这个问题是关于 REST 响应何时包含嵌套在正在查询的集合中的第二个
我试图在用户与其交互时保持资源列表的最新状态。使用 AngularJS ngResource,我最初使用它的 query 方法获取列表。每个资源都有一个 $remove (或 $delete)方法,对
大家好,我遇到了 ngResource 问题。问题是,当我转到 localhost:3000 时,我得到一个空白页面,而它应该显示登录页面。我在我的 Angular Controller 中声明了 n
我有一个像这样的 ngResource 对象: [...].factory('Event', ['$resource', function ($resource) { return $reso
我正在寻找一种方法来在一个地方处理所有基于 ngResource 的服务的网络相关错误。 From this answer我知道我可以为单个资源中的所有操作定义自定义拦截器。是否可以修改 angula
我有这个代码: dogsResource.delete({id: $stateParams.dogId}, angular.noop, function(value, response
我有具有以下字段的资源: description, picture 是否可以将该资源作为多部分/表单发送到 URL,如果可以,如何发送? 我试过把: app.factory('resource_nam
我有资源,Answer ,其中有一个由 QuestionnaireId 制成的复合键和 QuestionId . ngResource代码如下: function answerResource($re
尝试使用 Angular $resource,但它返回的不是方法。浏览稀疏的文档,我找到了这个: angular.module('productServices', ['ngResource']).
我在 Angular 的资源工厂方面遇到了麻烦。我有路径变量 id,并且 REST API 在同一 url 上也接受名为“id”的查询参数。让我们用一些例子来描述这个问题: 资源网址:"/person
ngResource 看起来是一种在 RESTful(或至少受 REST 启发)Api 中管理数据访问的非常方便的方法...但我想使用它管理的一些数据是只读的(至少从我的应用程序的 Angular 来
我的代码中有以下内容: function store() { this.products = [ new product("sku001", "Apple", "Tasty s
ngResource 看起来是一种在 RESTful(或至少受 REST 启发的)Api 中管理数据访问的非常方便的方法......但我想使用它管理的一些数据是只读的(至少从我的应用程序的 Angul
我正在尝试使用 ngResource 来查询 REST API。我需要在自定义 header 中指定我的 API key 。我试过这样: angular.module('ApiService', ['
我使用以下代码获取数据库对象: // Lookup Project object from server $scope.project = projectModel.get({}, {'id': se
所以我很难理解 angularJs 中的 promises。我混合了我的代码,试图对其进行一些暴力/逆向工程理解,但没有得出任何可行的结论。 我的代码:Is 正在回电以获取我管理的存储库列表。这些只是
我是一名优秀的程序员,十分优秀!