Проблема с получением возвращаемых значений в функции контракта солидности с использованием web3 js

функция прочности:

function getCredentials(uint id) public constant returns(string,string,uint) 
{
    address ad=acadr[id];
    uemail=email[ad];
    ulocation=location[ad];
    ugid=gid[ad];
    return (uemail,ulocation,ugid);
}

код вызова web3:

myInstance.getCredentials(1,function (error, result) {
                             if (!error) {
                                 console.log(result);
                             } else
                                 console.log(error);
}

это печатает шестнадцатеричное значение в журнале вместо строки и целого числа

пожалуйста помоги !

Ответы (2)

ваша функция обновляет значения veriables, поэтому она будет рассматриваться как транзакционная функция, и для нее будет сгенерирована транзакция в блокчейне,

И то, что вы получите в ответ на вызов, является хэшем транзакции (идентификатором транзакции) этой транзакции,

Так что тут 2 варианта

  1. Напишите константную функцию для получения значений переменных

  2. использовать события, своего рода механизм ведения журнала в Solidity, который будет возвращать значения, переданные ему после успешного майнинга вашей транзакции.

Для использования событий посмотрите код в этом вопросе

Используйте .call, чтобы отправить его как вызов только для чтения вместо транзакции.

myInstance.getCredentials.call(1, (error, result) => {

})