it-swarm.com.de

Wie können Sie mit Mongoose alle Dokumente aus einer Sammlung entfernen?

Ich weiß wie...

  • Entfernen Sie ein einzelnes Dokument.
  • Entfernen Sie die Sammlung selbst.
  • Entfernen Sie mit Mongo alle Dokumente aus der Sammlung.

Aber ich weiß nicht, wie ich mit Mongoose alle Dokumente aus der Sammlung entfernen kann. Ich möchte dies tun, wenn der Benutzer auf eine Schaltfläche klickt. Ich gehe davon aus, dass ich eine AJAX) -Anforderung an einen Endpunkt senden muss und den Endpunkt das Entfernen ausführen lassen muss, aber ich weiß nicht, wie ich mit dem Entfernen am Endpunkt umgehen soll.

In meinem Beispiel habe ich eine Datetime -Auflistung und möchte alle Dokumente entfernen, wenn der Benutzer auf eine Schaltfläche klickt.

api/datetime/index.js

'use strict';

var express = require('express');
var controller = require('./datetime.controller');

var router = express.Router();

router.get('/', controller.index);
router.get('/:id', controller.show);
router.post('/', controller.create);
router.put('/:id', controller.update);
router.patch('/:id', controller.update);
router.delete('/:id', controller.destroy);

module.exports = router;

api/datetime/datetime.controller.js

'use strict';

var _ = require('lodash');
var Datetime = require('./datetime.model');

// Get list of datetimes
exports.index = function(req, res) {
  Datetime.find(function (err, datetimes) {
    if(err) { return handleError(res, err); }
    return res.json(200, datetimes);
  });
};

// Get a single datetime
exports.show = function(req, res) {
  Datetime.findById(req.params.id, function (err, datetime) {
    if(err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    return res.json(datetime);
  });
};

// Creates a new datetime in the DB.
exports.create = function(req, res) {
  Datetime.create(req.body, function(err, datetime) {
    if(err) { return handleError(res, err); }
    return res.json(201, datetime);
  });
};

// Updates an existing datetime in the DB.
exports.update = function(req, res) {
  if(req.body._id) { delete req.body._id; }
  Datetime.findById(req.params.id, function (err, datetime) {
    if (err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    var updated = _.merge(datetime, req.body);
    updated.save(function (err) {
      if (err) { return handleError(res, err); }
      return res.json(200, datetime);
    });
  });
};

// Deletes a datetime from the DB.
exports.destroy = function(req, res) {
  Datetime.findById(req.params.id, function (err, datetime) {
    if(err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    datetime.remove(function(err) {
      if(err) { return handleError(res, err); }
      return res.send(204);
    });
  });
};

function handleError(res, err) {
  return res.send(500, err);
}
71
Adam Zerner

DateTime.remove({}, callback) Das leere Objekt stimmt mit allen überein.

122
cdbajorin

.remove() ist veraltet. Stattdessen können wir deleteMany verwenden

DateTime.deleteMany({}, callback).

34
Henok Tesfaye

In MongoDB entfernt die Methode db.collection.remove () Dokumente aus einer Sammlung. Sie können alle Dokumente aus einer Sammlung entfernen, alle Dokumente entfernen, die einer Bedingung entsprechen, oder den Vorgang einschränken, um nur ein einziges Dokument zu entfernen.

Quelle: Mongodb .

Wenn Sie Mongo Sheel verwenden, tun Sie einfach Folgendes:

db.Datetime.remove({})

In Ihrem Fall benötigen Sie:

Sie haben mir die Schaltfläche zum Löschen nicht angezeigt, daher ist diese Schaltfläche nur ein Beispiel:

<a class="button__delete"></a>

Ändern Sie den Controller in:

exports.destroy = function(req, res, next) {
    Datetime.remove({}, function(err) {
            if (err) {
                console.log(err)
            } else {
                res.end('success');
            }
        }
    );
};

Fügen Sie diese Ajax-Löschmethode in Ihre Client-JS-Datei ein:

        $(document).ready(function(){
            $('.button__delete').click(function() {
                var dataId = $(this).attr('data-id');

                if (confirm("are u sure?")) {
                    $.ajax({
                        type: 'DELETE',
                        url: '/',
                        success: function(response) {
                            if (response == 'error') {
                                console.log('Err!');
                            }
                            else {
                                alert('Success');
                                location.reload();
                            }
                        }
                    });
                } else {
                    alert('Canceled!');
                }
            });
        });
12
user3998237