如何从Mongoose的集合中删除所有文档?
我知道如何…
- 删除单个文档。
- 删除集合本身。
- 使用Mongo从集合中删除所有文档。
但是我不知道如何使用Mongoose从集合中删除所有文档。 我想在用户点击一个button时这样做。 我假设我需要发送一个AJAX请求到一些端点,并让端点去除,但我不知道如何处理在端点的删除。
在我的例子中,我有一个Datetime
集合,并且当用户点击一个button时,我想删除所有的文档。
API /date/ 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 /date/ 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); }
DateTime.remove({}, callback)
空对象将全部匹配。
在MongoDB中,db.collection.remove()方法从集合中删除文档。 您可以从集合中删除所有文档,删除与条件匹配的所有文档,或者限制操作以仅删除单个文档。
来源: Mongodb 。
如果你使用的是mongo sheel,只需要:
db.Datetime.remove({})
在你的情况下,你需要:
你没有给我看删除button,所以这个button只是一个例子:
<a class="button__delete"></a>
将控制器更改为:
exports.destroy = function(req, res, next) { Datetime.remove({}, function(err) { if (err) { console.log(err) } else { res.end('success'); } } ); };
在客户端js文件中插入这个ajax删除方法:
$(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!'); } }); });
有几个工具可以使用MongoDB的内置运算符。
Mac: https : //github.com/jeromelebel/MongoHub-Mac
Windows: https : //robomongo.org
它的快速和容易:)