【问题标题】:Update field in another schema with post hook mongoose使用 post hook mongoose 更新另一个模式中的字段
【发布时间】:2018-02-02 15:12:54
【问题描述】:

我有那个架构:

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 在 order-detail 中发生时,我需要更新字段“quantitySold”,我已经尝试过:

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

我该怎么做?

谢谢。

【问题讨论】:

    标签: mongodb express mongoose mongoose-schema


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我建议:

      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);
      

      【讨论】:

      • 我已经编辑了我的解决方案,这应该适用于 async/await,您的解决方案也可以正常工作。
      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2011-04-27
      相关资源
      最近更新 更多