简体   繁体   English

如何在 API 调用中显示嵌套的 object?

[英]How to display nested object in API call?

I'm trying to display conversion rates from a foreign exchange rate API using ejs.我正在尝试使用 ejs 从外汇汇率 API 显示转换率。 Using scriplet tags in express is throwing me off.在 express 中使用 scriplet 标签让我失望。

The json returned is displayed below and I'm trying to display each conversion_rate key-value pair on my results.ejs page.返回的 json 显示在下面,我正在尝试在我的results.ejs页面上显示每个 conversion_rate 键值对。

    result: 'success',
    documentation: 'https://www.exchangerate-api.com/docs',
    terms_of_use: 'https://www.exchangerate-api.com/terms',
    time_last_update_unix: 1606694407,
    time_last_update_utc: 'Mon, 30 Nov 2020 00:00:07 +0000',
    time_next_update_unix: 1606780927,
    time_next_update_utc: 'Tue, 01 Dec 2020 00:02:07 +0000',
    base_code: 'GBP',
    conversion_rates: {
      GBP: 1,
      AED: 4.9044,
      ARS: 108.037,
      AUD: 1.8075,
      BGN: 2.1882,
      BRL: 7.136,
      BSD: 1.3357,
      CAD: 1.733,
      CHF: 1.2087,
      CLP: 1023.4903,
      CNY: 8.7698,
      COP: 4871.9524,
      CZK: 29.3023,
      DKK: 8.3295,
      DOP: 77.3911,
      EGP: 20.8628,
      EUR: 1.1174,
      FJD: 2.7808,
      GTQ: 10.3785,
      HKD: 10.3355,
      HRK: 8.4544,
      HUF: 404.6535,
      IDR: 18958.4116,
      ILS: 4.4258,
      INR: 98.6626,
      ISK: 178.3468,
      JPY: 138.8819,
      KRW: 1474.7375,
      KZT: 565.2541,
      MVR: 20.5365,
      MXN: 26.7327,
      MYR: 5.4266,
      NOK: 11.8059,
      NZD: 1.8997,
      PAB: 1.3357,
      PEN: 4.804,
      PHP: 64.209,
      PKR: 212.2635,
      PLN: 5.0185,
      PYG: 9301,
      RON: 5.4534,
      RUB: 101.3236,
      SAR: 4.9995,
      SEK: 11.3603,
      SGD: 1.7846,
      THB: 40.4235,
      TRY: 10.449,
      TWD: 38.0077,
      UAH: 37.9832,
      USD: 1.3335,
      UYU: 56.8079,
      ZAR: 20.3363
    }
  }

Here is my server.js route这是我的server.js路线

app.get('/results', (req, res) => {
  const query = req.query.q;
  axios
    .get(`https://v6.exchangerate-api.com/v6/a66b8aae93f6e7abafe3aab5/latest/${query}`)
    .then(function (response) {
      const currencyPair = `Conversion Rates for ${query}`;
      console.log(response)
      res.render('results', {
        currencyPair,
        results: response.data,
      });
    })
});

And here is my current result.ejs page.这是我当前的result.ejs页面。 It only displays [object Object] currently.目前只显示[object Object]。

<h1><%= currencyPair %></h1>
<ul>
  <li>
    <div class="results">
      <div class="base">
        <span>Base Pair:</span>
        <span><%= results.base_code %></span>
      </div>
      <div class="conversionRate">
        <span>Conversion Rates:</span>
        <span><%= results.conversion_rates %></span>
      </div>
    </div>
  </li>
</ul> 

In a ejs template you can only print strings, but you're trying to print an object.在 ejs 模板中,您只能打印字符串,但您正在尝试打印 object。 That's why you get the [object Object] .这就是你得到[object Object]的原因。

To print an object, you just have to stringify it:要打印 object,您只需对其进行字符串化

<%= JSON.stringify(results.conversion_rates) %>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM