如何通过对根获取请求的响应重定向调用将参数传递给模板? [Express.js& Node.js的]

时间:2018-03-12 03:41:58

标签: javascript node.js express routes ejs

//cards to be created in template
var coins = [];
var formattedCoins = [];    

app.get("/", function(req, res){
        for(x in formattedCoins){
            for(y in formattedCoins[x])
            console.log("From '/': " + formattedCoins[x][y].name);
        }

        res.render("coin.ejs", {coins: formattedCoins});
    });

    //retrieve form information
    app.post("/getCoin", function(req, res){

        var symbol = req.body.formSymbol;

        request("https://api.coinmarketcap.com/v1/ticker/", function(error, response, body){
            //if no error and status is OK
                if(!error && response.statusCode == 200){
                    //data returned are not JS objects application must parse JSON data first into JS
                    var parsedData = JSON.parse(body);
                    //find coin with the same symbol submitted
                    for(x in parsedData){
                        if(parsedData[x].symbol == symbol.toUpperCase()){

                            //create object
                            var newCoin = {
                                name: parsedData[x].name,
                                symbol: parsedData[x].symbol,
                                usd: parsedData[x].price_usd,
                                btc: parsedData[x].price_btc
                            };

                            //save coin to list
                                coins.push(newCoin);
                                //filter into 2D array
                                formatCoins();
                        }
                    }
                }
            });

        res.redirect("/");
    });

嘿伙计们,

请耐心等待长长的代码,我不知道如何在不遗漏可能需要考虑的任何重要内容的情况下将其最小化。

我目前正在制作一个从'coinmarket'API中提取数据的应用程序。

我希望应用程序如何工作是在发出邮件请求并重定向回“/”后使用收到的新硬币呈现新数据。但是,会发生什么:

  • 提交表格
  • 服务器确认找到了对象并将其保存在全局数组'coins'中。
  • 将其格式化为可以更容易地渲染到模板中的2D数组。
  • 重定向到“/”(这是我希望呈现formattedCoins的地方)
  • 尝试使用'formattedCoins'参数渲染“coin.ejs”。
  • 再次加载页面而不渲染'formattedCoins'
  • 再次提交表单,无需输入
  • 使用新硬币进行页面渲染

我觉得我在将get请求路由到“/”以进行对象渲染方面做错了。

我能得到一些帮助吗?我看不出问题出在哪里。

谢谢!

0 个答案:

没有答案