根据货币获取记录

曼·穆罕默德(Mian Muhammad)

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

对于货币转换,我使用的是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转换价格。您可以为其使用开放式交易所exchange.json端点这是一个例子。

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据货币选择获取货币汇率

来自分类Dev

根据国家或时区 PHP、Codeigniter 获取货币

来自分类Dev

如何根据日期条件获取记录?

来自分类Dev

根据Postgresql中的条件获取以前的记录

来自分类Dev

根据SQL中的条件获取特定记录

来自分类Dev

如何根据条件从表中获取记录

来自分类Dev

如何根据最大日期获取不同的记录?

来自分类Dev

根据最新日期获取记录

来自分类Dev

如何根据ID数组获取表记录?

来自分类Dev

根据电子邮件获取Firebase记录

来自分类Dev

根据列最大值获取记录

来自分类Dev

根据以前的 ID 获取记录 - Laravel

来自分类Dev

根据父表记录获取所有子记录

来自分类Dev

使用MongoDB根据该记录的值获取不同的记录

来自分类Dev

根据wordpress中的货币更改货币头寸

来自分类Dev

Angular 2:根据您所在的位置获取货币价值

来自分类Dev

快速获取当地货币

来自分类Dev

通过货币获取文化

来自分类Dev

根据当前日期和配置数据获取记录

来自分类Dev

如何使用rest API根据不同的ID获取记录?

来自分类Dev

Active Record根据子数据获取父记录

来自分类Dev

Postgresql-根据Json值获取不同的记录

来自分类Dev

Rails 4-如何根据条件获取特定记录

来自分类Dev

使用LINQ根据记录ID获取最大的DataGridViewRow

来自分类Dev

如何根据条件从linq查询中获取100条记录

来自分类Dev

如何根据Elasticsearch的匹配查询获取总匹配记录

来自分类Dev

根据顺序对列进行排序后获取最新记录

来自分类Dev

如何根据状态或最近更新的时间戳获取记录?

来自分类Dev

根据更新的时间和严重性获取记录