javascript - 如何使用 Mongoose 从集合中删除所有文档?

我知道如何...

  • 删除单个文档。
  • 删除集合本身。
  • 使用 Mongo 从集合中删除所有文档。

但我不知道如何使用 Mongoose 从集合中删除所有文档。我想在用户单击按钮时执行此操作。我假设我需要向某个端点发送 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.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) 空对象会全部匹配。

https://stackoverflow.com/questions/28139638/

相关文章:

mongodb - MongoDB 中的 $unwind 运算符是什么?

node.js - Mongoose,更新对象数组中的值

mongodb - 在 MongoDB 中是否有命名集合的约定?

mongodb - 如何在mongodb中查询子对象

python - MongoKit vs MongoEngine vs Flask-MongoAlc

mongodb - MongoDB 的 $in 子句是否保证顺序

mongodb - MongoDB中的数据重复太多?

javascript - 如何使用 node.js 连接到 mongodb(并进行身份验证)?

node.js - 在 OSX 上安装和运行 MongoDB

mongodb - 在 Mongo 中,我如何漂亮地打印结果,所以 .find() 看起来像 .fi