我在许多其他模型中有同样的事情,但在这个不工作,有人能看出错误吗?
订单架构:
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 进行过滤时(这是正确的,我已经检查过)它总是返回一个空数组。
谢谢