首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据币种取数

根据币种取数
EN

Stack Overflow用户
提问于 2019-12-30 02:00:25
回答 2查看 202关注 0票数 2

我有一桌票,每张票都有价格。我已经将数据库中的基数设置为USD,假设有人想从美国以外的国家购买门票,我想向用户显示他们当地货币的价格。什么才是合适的方法。首先,我认为我可以在运行时将门票的价格转换为本地货币,但由于门票的数量可能很大,因此这种操作的成本会很高。

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

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-30 03:08:28

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

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2019-12-30 02:20:41

您可以使用nodejs-currency-converter npm。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59521941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档