不能从mongodb的集合中删除angular MEAN堆栈

Cannot delete from mongodb collection angular MEAN stack

本文关键字:删除 angular MEAN 堆栈 集合 mongodb 不能      更新时间:2023-09-26

我试图在MEAN堆栈应用程序中删除我的mongodb集合"setlist"中的记录。

index . html

<table class="table">
            <thead>
                <tr>
                    <th>Artist</th>
                    <th>Title</th>
                    <th>Key</th>
                    <th>Action</th>
                    <th>&nbsp;</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="setTrack in setlist" ng-click="clicked">
                    <td><h4>{{setTrack.Artist}}</h4></td>
                    <td><h4>{{setTrack.Title}}</h4></td>
                    <td><h4>{{setTrack.Key}}</h4></td>
                    <td><button class="btn btn-success" ng-click="removeFromSL(setTrack._id)">Remove from set list</button></td>
                </tr>
            </tbody>
        </table>

controller.js

    var myApp = angular.module('myApp', []);
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http) {
    console.log("Hello World from controller");
    var refresh = function() {
        $http.get('/setlist').success(function(response) {
            console.log("I got the data i requested");
            $scope.setlist = response;
            $scope.setTrack = "";
        });
    };
    $scope.addToSL = function(id) {
        $http.get('/tracks/' + id).success(function(response) {
            console.log(response);
            $http.post('/setlist', response).success(function(response) {
                console.log(response);
                refresh();
            });
        });
    };
    $scope.removeFromSL = function(id) {
        console.log(id);
        $http.delete('/setlist/' + id).success(function(response) {
            refresh();
        });
    };}]);

server.js

    var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('tracks', ['tracks']);
var db1 = mongojs('setlist', ['setlist']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname = ''public'));
app.use(bodyParser.json());
app.get('/setlist', function (req, res) {
    console.log("I recieved a get request");
    db1.setlist.find(function (err, docs) {
        console.log(docs);
        res.json(docs);
    });
});
app.delete('/setlist/:id', function (req, res) {
    var id = req.params.id;
    console.log(id);
    db1.setlist.remove({_id: mongojs.ObjectId(id)}, function(err, doc) {
        res.json(doc);
    });
});
app.listen(3000);
console.log("Server running on port 3000");

当我点击remove from set list按钮时,控制器和服务器,触发正确的函数,因为记录id被打印到控制台和服务器终端,但记录没有从集合中删除。

这里可能存在两个问题。

首先,最可能的是你的删除查询{_id: mongojs.ObjectId(id)}不匹配数据库中的任何文档。

第二,你有一些错误在删除阶段。

所以我建议如下。检查是否删除查询实际上有文档要删除这样做find({_id: mongojs.ObjectId(id)})。如果文件将被发现,然后尝试打印err,看看你有什么。

https://docs.mongodb.com/manual/reference/method/db.collection.remove/

文档