0

我在许多其他模型中有同样的事情,但在这个不工作,有人能看出错误吗?

订单架构:

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;
var OrderItem    = require('./orderitem');

var OrderSchema  = new Schema({
    _account: {type: Schema.Types.ObjectId, ref: 'Account', required: true},
    status: String,
    active: Boolean,
    comment: String,
    items: [{type: Schema.Types.ObjectId, ref: 'OrderItem'}]
}, { timestamps: true });

OrderSchema.pre('remove', function(next) {
    console.log('order ID:', this._id);
    OrderItem.remove({_order: this._id}, next);
});

module.exports = mongoose.model('Order', OrderSchema);

订单项目架构:

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var OrderItem = new Schema({
    _item: {type: Schema.Types.ObjectId, ref: 'Item', required: '{PATH} is required!'},
    _account: {type: Schema.Types.ObjectId, ref: 'Account', required: '{PATH} is required!'},
    _order: {type: Schema.Types.ObjectId, ref: 'Order', required: '{PATH} is required!'},
    comment: String,
    quantity: {type: Number, required: '{PATH} is required!'}
}, { timestamps: true });

OrderItem.pre('validate', function (next) {
    var Item     = require('./item');
    var err;
    Item.findOne({_id: this._item, _account: this._account}, function (err, item) {
        if (err) next(err);

        if (!item) {
            err = new Error("Item does not exist");
            next(err);
        }
        next();
    });
});

module.exports = mongoose.model('OrderItem', OrderItem);

问题是当我尝试删除订单时,中间件预删除发生,console.log 显示正确的 ID,但删除未找到任何内容(之前使用 item.remove() 进行查找也没有结果)

OrderSchema.pre('remove', function(next) {
    console.log('order ID:', this._id);
    OrderItem.remove({_order: this._id}, next);
});

如果我确实找到没有任何过滤器,它会给我所有的项目,包括具有特定订单的项目,但是当我尝试使用订单 ID 进行过滤时(这是正确的,我已经检查过)它总是返回一个空数组。

谢谢

4

0 回答 0