查询mongoose多个模型

Query mongoose multiple models

我正在使用 MEAN 堆栈 开发一个小应用程序,但我无法查询我的模型。

我有 4 个模型,在不同的文件中。

这是发票模型:

var invoiceSchema = new Schema ({
    employee : { type: Schema.Types.ObjectId, ref: 'Employee' },
    customer : { type: Schema.Types.ObjectId, ref: 'Customer' },
    products : { type: Schema.Types.ObjectId, ref: 'Product' },
    priced : Number,
    qty : Number,
    comment : String,
    date : Date
});

var Invoice = mongoose.model('Invoice',invoiceSchema);

exports.createInv = function (req, res) {
    Invoice.create({
        employee : req.body.employee,
        customer : req.body.customer,
        products  : req.body.products,
        priced : req.body.priced,
        qty : req.body.qty,
        comment : req.body.comment,
        date : req.body.date
    }, function(err) {
        if (err)
            return res.send(err);
    });
}

如您所见,它指向前 3 个字段的其他 3 个模型。 到目前为止一切正常,我可以使用来自员工、产品和客户的数据填充发票。

但我完全迷失了这样做:

我想为每个员工提供他们的总销售额(当他们创建发票时,数量 * 价格)。

如何为每个 Invoice 创建增加 Employee Model 中的 totalSales 字段?

员工模型:

var employeeSchema = new Schema ({
    firstname : String,
    lastname : {type : String, unique : true},
    age : Number,
    dept : String,
    mail : String,
    phone : String,
    totalsales : Number
});
var Employee = mongoose.model('Employee',employeeSchema);

我使用带有 $http 的服务到 post 数据。

谢谢!

看起来有点直截了当。但我猜下面的例子就是你要找的。

exports.createInv = function (req, res) {
    Invoice.create({
        employee : req.body.employee,
        customer : req.body.customer,
        products  : req.body.products,
        priced : req.body.priced,
        qty : req.body.qty,
        comment : req.body.comment,
        date : req.body.date
    }, function(err) {
        if (err)
            return res.send(err);
    });

   Employee.findOne({"_id":req.body.employee}, function (err, doc) {
      var salesPrice = req.body.priced * req.body.qty;
      doc.totalSales += salesPrice;
      doc.save();
   })
}

您可能想要添加验证以确保您的发票已创建。并且还向保存方法添加回调。