Problema al obtener valores de retorno en la función de contrato de solidez usando web3 js

función de solidez:

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);
}

código de llamada web3:

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

esto imprime un valor hexadecimal en registro en lugar de cadena e int

por favor ayuda !

Respuestas (2)

su función está actualizando los valores de los verificables, por lo que se considerará como una función transaccional y se generará una transacción para ella en blockchain,

Y lo que obtendrá a cambio de la llamada es el hash de transacción (id de transacción) de esa transacción,

Así que 2 opciones aquí

  1. Escribe una función constante para obtener los valores de las variables.

  2. use eventos, una especie de mecanismo de registro en solidez, que le devolverá los valores después de la extracción exitosa de su transacción.

Para usar eventos, eche un vistazo al código en esta pregunta

Úselo .callpara enviarlo como una llamada de solo lectura en lugar de una transacción.

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

})