Angular和Express $资源的RESTful CRUD

时间:2014-07-10 20:57:53

标签: node.js angularjs rest express mean-stack

我有我的JSON查询和正确创建。我有点担心如何从服务器中删除项目。他们正在被角度删除,但我似乎无法正确连接在服务器上删除它们。

我的server.js:

var hcController   = require('./server/controllers/services-controller.js')

//REST API
app.get('/api/hc', hcController.list);
app.post('/api/hc', hcController.create);
app.delete('/api/hc:_id', hcController.delete);

我的服务器端模型

var mongoose = require('mongoose');
   module.exports = mongoose.model('HealingCenterData',{
      title: String,
      shortname: String,
      summary: String,
      description: String
    });

我的服务器端控制器

var Hc = require('../models/healingcenter-model.js')

module.exports.create = function (req, res) {
  var hc = new Hc(req.body);
  hc.save(function (err, result){
    res.json(result);
  });
}

module.exports.list = function (req,res) {
  Hc.find({}, function (err, results){
    res.json(results);
  });
}

module.exports.delete = function (req, res) {
  ???????
  });
}

我的角色服务:

app.factory("HC", ["$resource", function($resource) {
    return {
        API: $resource('/api/hc/:id')
    }
}]);

我的角度控制器:

app.controller('servicesController', ['$scope', 'HC','$resource', function ($scope, HC, $resource) { 

  HC.API.query(function(results) {
        $scope.services = results;
    });

  $scope.createService = function() {
      var service = new HC.API();
      service.title = $scope.serviceTitle;
      service.shortname = $scope.serviceShortname;
      service.summary = $scope.serviceSummary;
      service.description = $scope.serviceDescription;
      service.$save(function(result){
        $scope.services.push(result);
        $scope.serviceTitle = '';
        $scope.serviceShortname = '';
        $scope.serviceSummary = '';
        $scope.serviceDescription = '';
      });
    }


$scope.removeItem = function(index){
    $scope.services.splice(index, 1);
  }

}]);

我的JSON结构

{ "_id" : ObjectId("53bea9366a03a66c2dad68bb"), "title" : "Auto Clinic", "shortname" : "auto_clinic", "summary" : "Volunteers evaluate car problems and make minor repairs. Labor is free, and the car owner pays for any needed parts. Oil changes are performed at a reduced cost. All services are performed on Saturdays.", "description" : "No additional information yet.", "__v" : 0 }

1 个答案:

答案 0 :(得分:1)

在服务器端尝试(我假设你正在使用moongose):

exports.delete = function(req,res){
    if(req.params.id !==null || req.params.id!==undefined){
        Hc.remove({_id:req.params.id},function(err){
                res.send(200);
       });
    }
 };

在客户端:

角度控制器:

var endPoint = $resource('/api/hc/:id', {id:'@tId'});
$scope.removeItem = function(id){
var ep = new endPoint({tId:id});
     ep.$delete(function(res){
         //TODO: update local array in scope
     });
};

修改 您可以直接在控制器中使用资源,也可以像在案例中那样直接使用服务,这完全没问题。