【发布时间】:2020-03-09 17:54:33
【问题描述】:
我的产品系列如下所示:
[{
_id: '1',
name: 'Car'
price: {
currency: 'EUR',
value: 1200
}
}, {
_id: '2',
name: 'TV'
price: {
currency: 'GBP',
value: 150
}
}, {
_id: '3',
name: 'Phone'
price: {
currency: 'USD',
value: 240
}
}]
现在,有人向我的后端发送请求以显示价格在 10 到 500 PLN 之间的所有产品。我的想法是获取基础货币 PLN 的当前汇率,计算每种产品货币每次迭代的边缘价格(10 和 500),并查看价格是否在计算范围内。问题是我无法构建正确的查询。我试过这样:
const query = [
...(req.query.priceFrom ? [{ "price.value": { "$gte": getCalculatedRange(req.query.priceFrom, '$price.currency') }}] : []),
...(req.query.priceTo ? [{ "price.value": {"$lte": getCalculatedRange(req.query.priceTo, '$price.currency') }}] : [])
];
const products = await Product.find({ $and: query });
如您所见,我想获得当前迭代产品价格的正确范围,但问题是不可能(或者可能?)从当前迭代(在我的例子中:货币)传递值以按顺序运行获得转换后的价值。文本 '$price.currency' 被传递给函数,而不是对象的实际值(我知道这在我看来很明显而且很愚蠢,但我想彻底说明它并清楚我在努力解决的问题)。
有没有办法让它工作?
【问题讨论】:
标签: node.js mongodb express mongoose currency