【问题标题】:AngularJS + ExpressJS + mongoose: Add delete functionalityAngularJS + ExpressJS + mongoose:添加删除功能
【发布时间】:2023-04-07 01:18:01
【问题描述】:

我对 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/&lt;id&gt; 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 也有一个模板。我有一种感觉,我错过了一件,但我就是不知道它是什么。

【问题讨论】:

    标签: javascript angularjs node.js express mongoose


    【解决方案1】:

    确保启动 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}`);
    }
    

    【讨论】:

    • 我仍然遇到同样的错误,只是现在是DELETE http://localhost:4000/api/diseases/569edff5b829031c5ebcc75f 404 (Not Found)
    • 还是没有运气...我收到了同样的404。会不会是找不到模板而不是网址有问题?
    • 您是否真的启动了 http express 服务器或者这就是您在 Node.js 中拥有的所有代码?
    • 答案还是来自聊天?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多