Как заполнить массив объектов данными из умного контракта? - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь заполнить таблицу массивом объектов, таких как:

 myPacients: {name: string, pAddress: string}[];

 myPacients = [
       { "John Doe", "0x0234234..."},
       { "Alex Morgan", "0x2354354..."},
       ...etc...
]; 

Но когда я пытаюсь заполнить свою таблицу из клиентского приложения Angular 6, он показывает мне только последний объектчто я пишу это с функцией newPacient(). Мой Solidity ^0.5.0 код очень хорошо работает в трюфельной консоли.

Моя newPacient() функция:

async newPacient() {
    let _pacientAddress = this.pacientAddress;
    try {
      const deployedMedBlock = await this.MedBlock.deployed();
      await deployedMedBlock.newPacient(_pacientAddress, { from: myAddress });
    } catch (e) {
      console.log(e)
    }
  }

Моя getAllPacients():


async getAllPacients() {
    try {
      const deployedMedBlock = await this.MedBlock.deployed();
      let medBlockMedicAddresses = await deployedMedBlock.getPacientAddresses({ from: this.model.account });
      this.pacientAccounts = medBlockMedicAddresses;
      console.log(this.pacientAccounts);
    } catch (e) {
      console.log(e);
    }
    for (let i = 0; i < this.pacientAccounts.length; i++) {
      this.getUserByAddress(this.pacientAccounts[i]).then((result) => {
        this.myPacients = [
          {name: result, pAddress: this.pacientAccounts[i]}[i]
        ];
      })
    }
  }
}

Моя getUserByAddress(userAddress) функция

 async getUserByAddress(userAddress) {
    try {
      const deployedMedBlock = await this.MedBlock.deployed();
      let medBlockUser = await deployedMedBlock.getName(userAddress, { from: myAddress });
      return medBlockUser;
    } catch (e) {
      console.log(e);
    }
  }

Как мне извлечь все данные из смарт-контракта и заполнить мой внешний массив?

...