Как вы можете удалить все документы из коллекции с Мангустом?
Я знаю, как...
- удалить один документ.
- удалить саму коллекцию.
- удалите все документы из коллекции с помощью Mongo.
но я не знаю как удалить все документы из коллекции с Мангуста. Я хочу сделать это, когда пользователь нажимает кнопку. Я предполагаю, что мне нужно отправить запрос AJAX на некоторую конечную точку и заставить конечную точку выполнить удаление, но я не знаю, как обрабатывать удаление в конечная точка.
в моем примере, у меня есть Datetime
коллекция и я хочу удалить все документы, когда пользователь нажимает кнопку.
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.контроллер.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);
}
4 ответа:
в MongoDB, БД.коллекция.метод remove() удаляет документы из коллекции. Можно удалить все документы из коллекции, удалить все документы, соответствующие условию, или ограничить операцию удалением только одного документа.
источник: Mongodb.
если вы используете mongo sheel, просто сделайте:
db.Datetime.remove({})
в вашем случае, вам необходимо:
вы не показали мне кнопку удаления, так что эта кнопка просто пример:
<a class="button__delete"></a>
изменить контроллер:
exports.destroy = function(req, res, next) { Datetime.remove({}, function(err) { if (err) { console.log(err) } else { res.end('success'); } } ); };
вставьте этот метод ajax delete в файл JS вашего клиента:
$(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!'); } }); });
.remove()
устарела. вместо этого мы можем использовать deleteMany
DateTime.deleteMany({}, callback)
.
есть несколько инструментов со встроенными операторами для MongoDB.
Mac:https://github.com/jeromelebel/MongoHub-Mac
Windows:https://robomongo.org
быстро и легко :)