Как удалить нотацию scientifi c в nodejs / html и отображать только в десятичном виде? - PullRequest
2 голосов
/ 03 марта 2020

Я использую приложение node JS для отправки электронной почты с помощью amazon SES, используя ses.sendTemplatedEmail API

Я также упомянул чистый файл html шаблона для справки, если необходимо

как мне достичь ожидаемого результата? я не знаю, что идет не так и почему он использует scientifi c, если в тесте JSON

указано десятичное число. js

const aws=require('aws-sdk')
const ses = new aws.SES({ apiVersion: "2020-12-01",region:"us-east-1"});
var a = {
    "Items": [
        {
            "timeSinceInactive": 0.00011574074074074075,
            "id": "myid1",
            "ssid": "myssid",
            "deviceName": "devicename1"
        },
        {
            "timeSinceInactive": 0.00009259259259259259,
            "id": "myid2",
            "ssid": "myssid2",
            "deviceName": "devicename2"
        }
    ]
}
b = JSON.stringify(a)
console.log(b)
async function sesSendEmail(b,ses) {
    var params = {
      Source: "abc@gmail.com",
      Template: "mytemplatename",
      Destination: {
        ToAddresses: ["xyz@gmail.com"] // Email address/addresses that you want to send your email
      },
      TemplateData: b,
    }
    try {
      await ses.sendTemplatedEmail(params).promise()
    }
    catch (err) {
      console.log(err)
      throw new Error(err)
    }
  };
  function setAwsCredentials() {
    awsCredentials = {
      region: "us-east-1",
      accessKeyId: "",
      secretAccessKey: ""
    };
    aws.config.update(awsCredentials);
    console.log("Set credentials successfully")
  }
setAwsCredentials()
sesSendEmail(b,ses)

шаблон. html

<table border='2' width='1000'>
    <tr>
        <th>timeSinceInactive</th>
        <th>id</th>
        <th>ssid</th>
        <th>deviceName</th>
    </tr>
    <thead>
        <tr>
            {{#each Items.[0]}}
            {{/each}}
        </tr>
    </thead>
    <tbody>
        {{#each Items}}
        <tr>
            {{#each this}}
            <td>
                 {{this}}
            </td>
            {{/each}}
        </tr>
        {{/each}}
    </tbody>
</table>

токовый выход :

timeSinceInactive        id      ssid    deviceName
1.1574074074074075E-4   myid1   myssid  devicename1
9.259259259259259E-5    myid2   myssid2 devicename2

желаемый выход

timeSinceInactive        id      ssid    deviceName
0.00011574074074074075  myid1   myssid  devicename1
0.00009259259259259259  myid2   myssid2 devicename2

РЕДАКТИРОВАТЬ

Мне также нужно отсортировать данные, поэтому, к сожалению, преобразование их в строку не является реальной альтернативой.

Примечание

Я использую API createTemlate от Amazon SES, который поддерживает рули ... поэтому код html по умолчанию использует рули ... что вызывает проблему при его создании в scientifi c обозначения по какой-то причине, как я могу сделать его только десятичным?

Ответы [ 2 ]

1 голос
/ 04 марта 2020

На мой взгляд, вам следует переключиться на шаблон, который менее универсален c и сделать вызов настраиваемому помощнику, который будет отображать число по вашему желанию. Шаблон будет выглядеть так:

<table border='2' width='1000'>
    <tr>
        <th>timeSinceInactive</th>
        <th>id</th>
        <th>ssid</th>
        <th>deviceName</th>
    </tr>
    <thead>
        <tr>
            {{#each Items.[0]}}
            {{/each}}
        </tr>
    </thead>
    <tbody>
        {{#each Items}}
        <tr>
            <td>
               {{customFormatNumber timeSinceInactive}}
            </td>
            <td>
               {{id}}
            </td>
            <td>
               {{ssid}}
            </td>
            <td>
               {{deviceName}}
            </td>
        </tr>
        {{/each}}
    </tbody>
</table>

А вот пользовательский помощник, который вы можете написать (это всего лишь пример, вероятно, не тот, который вам нужен):

Handlebars.registerHelper('customFormatNumber ', function(item, options) {
    retrun item.toPrecision(10)
});
1 голос
/ 04 марта 2020

Вы можете рассмотреть преобразование чисел в строки перед передачей их в шаблон. Таким образом, вы можете контролировать форматирование.

...