gpt4 book ai didi

javascript - 根据货币获取记录

转载 作者:行者123 更新时间:2023-11-30 19:00:52 26 4
gpt4 key购买 nike

我有门票表,每张门票都有一个价格。我已将数据库中的基数设置为美元,假设有人想从美国以外的国家/地区购买机票,我想以本地货币向用户显示价格。什么是合适的方法。首先,我虽然可以在运行时将门票价格转换为本地货币,但由于门票数量可能很大,因此此操作的成本很高。

对于货币转换,我使用 Open Exchange Rates API ,我需要根据通过 req.query 提供的货币提供价格。

我不能在这里显示实际代码,但我有一个示例:

const express = require('express');
const Product = require('../models/Product');
const { fetchRates } = require('../services/fx_rates')

const router = new express.Router();

router.post('/products', async (req, res) => {

const product = new Product({
...req.body
});

try {
await product.save();
res.status(201).send(product);
} catch (e) {
res.send(400).send(e);
}
});

router.get('/products', async (req, res) => {
try {
const products = await Product.find()
// if (req.query.to) {
// for (let product of products) {
// fetchRates(product.price, 'USD', to)
// .then(price => {
// product.price = price
// })
// .catch(e => console.log(e))

// }
// }
console.log(products)
res.status(200).send({ products: products })
} catch (e) {
res.status(500).send();
}
});

module.exports = router

最佳答案

一种方法是获取所需本地货币相对于美元的兑换率,然后使用代码而不是 API 来兑换价格。您可以使用 open exchange latest.json endpoint为了它。这是一个例子。

const rp = require('request-promise');

async function getConversionRate(localCurrency, base = 'USD'){
const options = {
uri: 'https://openexchangerates.org/api/latest.json',
qs: {
app_id: 'YOUR_APP_ID',
base: base,
symbols: localCurrency,
},
json: true
};
const result = await rp(options);
/*
{
disclaimer: "https://openexchangerates.org/terms/",
license: "https://openexchangerates.org/license/",
timestamp: 1449877801,
base: "USD",
rates: {
INR: 71.43
}
}
*/
return result.rates[localCurrency];
}

router.get('/products', async (req, res) => {
try {
const [products, conversionRate] = await Promise.all([Product.find(), getConversionRate(req.query.to)])
const convertedProducts = products.map(p => {
p.price = p.price * conversionRate;
return p;
});
console.log(convertedProducts)
res.status(200).send({ products: convertedProducts })
} catch (e) {
res.status(500).send();
}
});

module.exports = router;

关于javascript - 根据货币获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com