0

I am creating a website using express JS using api from coingecko. At first a main.html page loads asking for crypto coin name, when we hit enter the coin details are fetched from coin gecko Api.

I have used a variable named coin to store the submitted coin from main.html page.

After I recieve a response from the api request I parse the response body which is string using JSON.parse() and store it in the obj variable.

The problem here is inside the app.post request on the line console.log(obj.coin)

when I take a coin name input and console log obj.{name of the coin I submitted} for example console.log(obj.litecoin) it gives correct response but when I try to use the coin name from the coin variable It throws error example console.log(obj.coin) throws error where coin = litecoin (as string) .

What are the possible solutions for this error ? and sorry for bad english.

the index.js file

const express = require('express')
const bodyparser = require('body-parser')
const request = require('request')

const app = express()

app.use(bodyparser.urlencoded({extended:true}))
app.use(express.static('public'))

app.set('view engine', 'ejs');

app.get("/",function(req,res){
    res.sendFile(__dirname+"/public/main.html")
})
let coin = ""
let inr = ""
let usd = ""
let eur = ""
let logo = ""
let flink = "https://api.coingecko.com/api/v3/simple/price?ids="
let milink = "&vs_currencies=inr%2Cusd%2Ceur&include_market_cap=true"


app.get("/info" , function(req,res){
    res.render('list' , {newcoin : coin })
})


app.post("/",function(req,res){
    // console.log(req.body.coin)
    coin = req.body.coin 
    coin = coin.toLowerCase()
    request(flink+coin+milink,function(error,response,body){
        let obj = JSON.parse(body)
        console.log(obj.litecoin);
        //console.log(obj.coin);
    })
    res.redirect("/info")
})



app.listen(3000, function (err) {
    if (err)
        console.log("Error in server setup")

    console.log("Server listening on Port", 3000);
})

The main.html file

<!DOCTYPE html>
<html lang="en">

<head>
    <title>Document</title>
    <link rel="stylesheet" href="css/main.css">
</head>

<body>
    <div class="container">
        <form action="/" method="post">
            <div class="inp">
                <input name="coin" type="text" placeholder="Enter Bitcoin">
            </div>
            <div class="search">
                <button type="submit">Search</button>
            </div>
        </form> 
    </div>
    <div class="content">
        <div class="name"></div>
    </div>
</body>

</html>
jonrsharpe
  • 115,751
  • 26
  • 228
  • 437

0 Answers0