查询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();
})
}
您可能想要添加验证以确保您的发票已创建。并且还向保存方法添加回调。
我正在使用 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();
})
}
您可能想要添加验证以确保您的发票已创建。并且还向保存方法添加回调。