如何使用Mongoose删除中间件级联删除?

ale*_*hzr 2 mongoose mongodb node.js

当DELETE请求发送到我的API时,我正在尝试删除模式的所有依赖项.删除没问题,但删除中间件,它应该是清理依赖项,似乎甚至没有被调用.

这是我的Customer架构:

var mongoose = require("mongoose"),
Schema = mongoose.Schema,
passportLocalMongoose = require('passport-local-mongoose');

var Order = require('./order');
var Customer = new Schema({
    name: String,
    telephone: Number,
    address: String,
    email: String,
    seller: String
});

Customer.post('remove', function(next) {
    Order.remove({ customer: this._id }).exec();
    next();
});

Customer.plugin(passportLocalMongoose);

module.exports = mongoose.model("Customer", Customer);
Run Code Online (Sandbox Code Playgroud)

这是我的客户路线:

var express = require('express');
var router = express.Router();
var passport = require('passport');
var isAuthenticated = require('./isAuthenticated');
var Customer = require('../models/customer');
var Order = require('../models/order');

// (...)

router.delete('/:customer_id', function(req, res) {
    Customer.remove({ _id: req.params.customer_id }, function(err) {
        if (err)
            res.json({ SERVER_RESPONSE: 0, SERVER_MESSAGE: "Error deleting", ERR: err });
        else res.json({ SERVER_RESPONSE: 1, SERVER_MESSAGE: "Customer deleted" });
    });
});

// (...)
Run Code Online (Sandbox Code Playgroud)

我确实看过这个问题和Mongoose Docs(Mongoose Middleware),但我仍然不清楚.我不知道我错过了什么或做错了什么.

提前致谢!

编辑

这是我项目的存储库.请随意调查.

ale*_*hzr 7

我终于找到了解决方案.中间件没有触发,因为你必须在模型实例上使用remove(),save()等,而不是模型本身.

例:

Customer.remove({...}); 不行.

Customer.findOne({...}, function(err, customer) {
  customer.remove();
});
Run Code Online (Sandbox Code Playgroud)

会工作,并将做任何事情Customer.post('remove').