¿Cómo convertir el resultado de BN en una cadena o número legible en ethjs?

Estoy recibiendo el resultado en formato BN. ¿Cómo puedo convertirlo en una cadena o número real? Estoy usando la biblioteca ethjs para interactuar con Smart Contract.

token.totalSupply().then((totalSupply) => {
  // result <BN ...>  4500000
});

Respuestas (1)

Una vez que tenga un objeto BN, puede usar .toString()o .toNumber()en él.

Según los comentarios a continuación, su función en realidad no está recibiendo un archivo BN. Está obteniendo algún tipo de Resultsobjeto que tiene una sola clave: 0. (Presumiblemente, si la función devolviera múltiples valores, habría más claves).

Entonces, primero extraiga el BNde Result:

token.totalSupply().then(result => {
  const supply = result[0];
  console.log(supply.toString());  // or .toNumber()
});
UnhandledPromiseRejectionWarning: Rechazo de promesa no manejado (id de rechazo: 1): TypeError: totalSupply.toNumber no es una función
es un objeto
¿Está esto en el navegador? Si es así, ¿ console.log(totalSupply)y navegar a través de él para ver qué funciones están disponibles? ethjsdice que usa bn.js, y esos objetos BN tienen toNumbery toStringambos documentados.
Está en el servidor NodeJS. Los totalSupplyregistros Result { '0': <BN: 100590> }El suministro total debe ser 1050000.
Oh, parece que necesitas algo como (result) => { console.log(result[0].toNumber()); }.
Gracias @smarx. Funcionó. ¿Puedes actualizar la respuesta también?
Respuesta actualizada.