javascript - 如何在猫鼬中使用填充执行简单的乘法?
问题描述
我正在研究添加到购物车功能,并且正在尝试计算购物车中所有产品的小计。在我的购物车集合中,我有一组产品参考和用户选择的其他属性。特定产品变体的价格存储在产品集合中。当我查询购物车集合时,我想将所选数量乘以产品价格以获得小计。
我尝试的是使用 populate() 来获取变量字段,但我无法弄清楚如何仅过滤用户选择的变量。非常感谢任何帮助,谢谢你们。
await Cart.findOne({ user: userId }).populate({
path: 'products.product',
model: 'Product',
select: 'variations',
match: { colour: { $eq: 'Black' }, size: { $eq: 'M' } },
});
const Cart = new mongoose.Schema({
user: {
type: ObjectId,
ref: 'User',
},
products: [
{
product: { type: ObjectId, ref: 'Product' },
colour: { type: String, required: true },
size: { type: String, required: true },
quantity: { type: Number, required: true },
},
]
});
const Product = new Schema(
{
name: {
type: String,
required: true,
trim: true,
},
variations: [
{
price: { type: Decimal128, required: true },
quantity: { type: Number, required: true },
colour: String,
size: String,
},
],
},
);
编辑
购物车文档示例:
{ user: 605dcvaddee2a83299c7482b,
products: [{
product: {
variations: [
{ colour: Black, size: S, price: 45, quantity: 100 },
{ colour: Black, size: M, price: 50, quantity: 100 }, // need this price
{ colour: Black, size: L, price: 60, quantity: 100 },
]
},
colour: 'Black', //selected by user
size: 'M', //selected by user
quantity: 20 //selected by user
}]
}
我想要达到的目标:
{
user: 605dcvaddee2a83299c7482b,
products: [{
product: {
variations: { colour: Black, size: M, price: 50, quantity: 100 }
},
colour: 'Black', //selected by user
size: 'M', //selected by user
quantity: 20 //selected by user
}],
subtotal: 1000
}