Tengo una API Express simple aquí. Cuando el usuario envía el parámetro de cadena, quiero convertir el parámetro en un objeto. Dependiendo de la entrada, el objeto tendrá diferentes valores En este momento, solo tengo un montón de declaraciones if apiladas
¿Existe una mejor solución de práctica para implementar esto, ya que es bastante torpe?
app.get('/gettokens/:chain/:address', async(req, res) => { const address = req.params.address; let chain = req.params.chain; if (chain == 'bsc') { chain = { moralis: 'bsc', coingecko: 'binance-smart-chain' } } if (chain == 'eth') { chain = { moralis: 'eth', coingecko: 'ethereum' } } if (chain == 'avax') { chain = { moralis: 'avalanche', coingecko: 'avalanche' } } if (chain == 'matic') { chain = { moralis: 'matic', coingecko: 'polygon-pos' } }Puedes intentar usar un objeto constante
const chainDef = { bsc: { moralis: 'bsc', coingecko: 'binance-smart-chain' } , … } // you should validate `req.params.chain` before doing this const chain = chainDef[req.params.chain]¡Espero que esto ayude!
Puedes usar algún objeto de configuración para manejarlo
como esto
const config = { bsc: { moralis: 'bsc', coingecko: 'binance-smart-chain' }, eth: { moralis: 'eth', coingecko: 'ethereum' }, avax: { moralis: 'avalanche', coingecko: 'avalanche' }, matic: { moralis: 'matic', coingecko: 'polygon-pos' } } const fallback = { moralis: 'something', coingecko: 'something' } const getChain = (key) => config[key] || fallback console.log(getChain('matic')) console.log(getChain('not defined'))Puede definir un objeto con todos sus valores diferentes y usar el req.params.chain esperado como claves:
const ChainObjs = { bsc: { moralis: 'bsc', coingecko: 'binance-smart-chain' }, eth: { moralis: 'eth', coingecko: 'ethereum' }, ... }Y luego puedes obtener el valor correcto como este
app.get('/gettokens/:chain/:address', async(req, res) => { let chain = ChainObjs[req.params.chain] })