AngularJS + ExpressJS + 猫鼬:添加删除功能

AngularJS + ExpressJS + mongoose: Add delete functionality

本文关键字:删除 功能 添加 猫鼬 ExpressJS AngularJS      更新时间:2023-09-26

我对AngularJS很陌生,对ExpressJS和Mongoose甚至更新。 我一直在按照教程发布到我的数据库并从中获取,但是在添加删除功能时遇到问题。

这是我调用删除函数的地方:

<ul ng-repeat="disease in diseases">
    <li>
        {{ disease.name }}: {{ disease.chipped }}, 
                            {{ disease.received }}, 
                            {{ disease.smashed }}, 
                            {{ disease.complete }}
    </li>
    <button ng-click="removeDisease(disease)"></button>
</ul>

。在我的控制器中,我有:

app.controller('MainCtrl', [
    '$scope',
    'TrelloApi',
    'diseases',
    function($scope, TrelloApi, diseases){
        $scope.diseases = diseases.diseases;
        $scope.removeDisease = function(disease) {
            console.log(disease);
            diseases.destroy(disease);
        }
    }
]);

。它打电话给我的diseases工厂:

app.factory('diseases', [
    '$http',
    function($http){
        var o = {
            diseases: []
        };
        o.destroy = function(disease) {
            return $http.delete('/diseases/' + disease._id).success(function(data){
                console.log("Disease " + disease.name + " has been removed!");
                o.getAll();
            });
        };
        return o;
    }
]);

这将返回 404 错误: DELETE http://localhost:4000/diseases/<id> 404 (Not Found)即使在我的路线包括:

var mongoose = require('mongoose');
var express = require('express');
var router = express.Router();
var Disease = mongoose.model('Disease');
// Not functional
router.delete('/diseases/:id', function(req, res, next) {
    console.log(req);
});
// Functional
router.post('/diseases', function(req, res, next) {
  var disease = new Disease(req.body);
  disease.save(function(err, diseases){
    if(err){ return next(err); }
    res.json(diseases);
  });
});

ui.router包括:

app.config([
    'TrelloApiProvider', 
    '$stateProvider',
    '$urlRouterProvider',
    function(TrelloApiProvider, $stateProvider, $urlRouterProvider) {
        .state('diseases', {
            url: '/diseases/{id}',
            templateUrl: '/javascripts/home/_diseases.html',
            controller: 'MainCtrl'
        });
        $urlRouterProvider.otherwise('home');   
    }
]); 

还有一个模板在 /javascripts/home/_diseases.html . 我有一种感觉,我错过了一件,但我就是想不通它是什么。

确保启动 Express HTTP 服务器:

const express = require('express');
const router = express.Router();
router.delete('/diseases/:id', function(req, res, next) {
  const id = req.params.id;
  console.log(id);
});
const app = express();
app.use('/', router);
const server = http.createServer(app).listen(8080, serverCallback);
function serverCallback() {
  const host = server.address().address;
  const port = server.address().port;
  console.log(`Server listening on ${host}:${port}`);
}