Mientras creo un proyecto de mercado, escucho eventos para almacenar precios de NFT en el backend de mi nodo. En la muestra dada, implementé un middleware de pre-guardado que verifica si el número es un número entero o no y si el número es un número entero, asume que el valor está en Ether y ejecuta el siguiente middleware. Si no es un número entero, supongo que se trata de un valor WEI, por lo que convierto de WEI a ETHER. El problema surge cuando el valor de ETHER está en decimales, supongamos "1.2 ETH". Dado que no es un número entero, se omite la devolución de llamada next() y fromWei("1.2ETH") se ejecutan en un valor ETHER.
nft.pre('save', async function(next) { if (!this.isModified('nftPrice')) return next(); if(!(Number.isInteger(this.nftPrice))) return next(); this.nftPrice=web3.fromWei(`${this.nftPrice}`,'ether'); next(); });Esto puede causar problemas en el valor del precio de un activo, ya que el usuario final recibirá un precio incorrecto.