使用 post hook mongoose 更新另一个模式中的字段

Update field in another schema with post hook mongoose

我有那个模式:

var schema = new Schema({
number: {type: Number},
subtotal: {type: Float, required: true},
quantity: {type: Number, required: true},
prodprov: {type: Schema.Types.ObjectId, ref: 'ProdProv'},
order: {type: Schema.Types.ObjectId, ref: 'Order'}
});

module.exports = mongoose.model('OrderDetail', schema);

var schema = new Schema({
name: {type: String, required: true},
price: {type: Float, required: true},
idProvider: {type: Schema.Types.ObjectId, ref: 'Provider'},
idProduct: {type: Schema.Types.ObjectId, ref: 'Product'},
description: {type: String},
quantitySold: {type: Number}
});

module.exports = mongoose.model('ProdProv', schema);

当 post.save 发生在订单详情中时,我需要更新字段 "quantitySold",我试过这个:

schema.post('save', function(next){
   //But this point I can't find the prodprov to update field
})

我该怎么做?

谢谢。

我建议:

var ProdProv = require('./ProdProv');

var schema = new Schema({
  number: {type: Number},
  subtotal: {type: Float, required: true},
  quantity: {type: Number, required: true},
  prodprov: {type: Schema.Types.ObjectId, ref: 'ProdProv'},
  order: {type: Schema.Types.ObjectId, ref: 'Order'}
});

schema.post('save', async function(doc){
  var prod = await ProdProv.findById(doc.prodprov);
  prod.quantitySold = doc.quantity;
  prod.save()
});

module.exports = mongoose.model('OrderDetail', schema);

谢谢@mjim,但那段代码不起作用。我已经修改了代码并且可以工作了!这是我的解决方案:

schema.post('save', function(doc){
    var prod = ProdProv.findById(this.prodprov).exec().then((pp) => {
        pp.quantitySold += this.quantity;
        pp.save();
    });
});