Чтение файла JSON и извлечение данных - PullRequest
0 голосов
/ 30 марта 2019

Файл задания Jason

{
  "customer": "Haya",
  "oliveQuantity": 2,
  "oliveType": "Picual",
  "harvestDate": "12/8/2019",
  "sourceRegion": "Al Rayyan",
  "receptionDate": "9/9/2019",
  "millingDate": "20/11/2019",
  "jobId": 2222,
  "productCategory": "Container",
  "jobStatus": "Pending",
  "containerAmount": 1,
  "ContainerType": "BigContainer"

}

Данные файла Jason

"container": [

  {
    "ContainerType": "BigContainer",
    "ContainerPrice":30

  },
  {
    "ContainerType": "mediumContainer",
    "ContainerPrice":25

  },
  {
    "ContainerType":  "smoilContainer",
    "ContainerPrice":20

  }
]

Класс хранилища счетов

async addInvoice(invoice) {

    try {

        const Job = await this.getJobs();
        if (Job.jobStatus == "Completed") {

        invoice.invoiceNo = uuid.v4();

        invoice.invoiceDate = Date.now();

        invoice.oliveQuantity = Job.oliveQuantity;


        if (Job.productCategory == "Container") {

           let datas = await this.getData();


            invoice.ContainerType =Job.ContainerType

            //datas.filter(data => data.container.find(c => c.includes(invoice.ContainerType );


            invoice.containerAmount = Job.containerAmount;
            invoice.containerType = Job.containerType;


      }
        invoice.push(invoice);

        return await this.saveInvoice(invoice);
    }

} catch (err) {
    console.log(err);
    }

}

В методе addInvoice (счет) Мне нужно знать, какой тип контейнера клиент использует, а затем извлечь цену.Затем возьмите цену контейнера и умножьте ее на сумму контейнера.Сумма контейнера должна быть извлечена из файла Job Jason

1 Ответ

0 голосов
/ 30 марта 2019

, если порядок объектов в массиве Container всегда одинаков и известен, вы можете просто сделать Container[1]

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

после обновленного вопроса

invoice.ContainerObjectFromData = datas.container.find(c => c.ContainerType === invoice.ContainerType); при условии, что datas.container можно найти непосредственно в объекте datas, который возвращается из вызова getData.

...