如何使用EJS文件从NodeJS服务器检索完整的JSON

时间:2016-08-12 15:15:22

标签: json node.js ejs

我创建了一个NodeJS服务器,它使用EJS文件将JSON数据发送到前端。我想要的只是我从三个API中获取的JSON代码将显示在前端(localhost)。 当我执行类似<h1><%= data2[0]['id'] %></h1>的操作时,它可以工作,但这只能给我一小部分我需要的JSON。

服务器代码:

var express = require('express');
var router = express.Router();
var request = require('request');
var app = express();

router.get("/", function(req, res){
var request = require('request-promise');
var data1;
var data2;
var data3;


request("http://api1.com").then(function(body){
    data1 = JSON.parse(body);

    return request("http://api2.com");
})
    .then(function(body) {
        data2 = JSON.parse(body);


        return request("http://api3.com");
    })
    .then(function(body){
        data3 = JSON.parse(body);

        res.render("services.ejs", {data1: data1, data2: data2, data3: data3});
    })
});

module.exports = router;

前端示例:

<!DOCTYPE html>
<html>
<body>

    <p><%= data1 %></p>
    <p><%= data2 %></p>
    <p><%= data3 %></p>

</body>
</html>

这就是我希望它看起来的样子,但它也可以是段落或其他无组织的方式,只要它具有来自API的完整JSON:

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您只关心在没有任何格式化和突出显示的情况下显示数据,您只需执行

即可

res.send({data1: data1, data2: data2, data3: data3})

我假设您正在看[object Object]或与您的代码类似的东西,即使我对ejs知之甚少,我也猜测你必须亲自遍历对象并生成遍历期间的相关HTML代码。通过这种方式,您可以精心打印并突出显示您心中的内容。

答案 1 :(得分:0)

res.json({ data1: data1, data2: data2, data3: data3 });

是向客户端发回基于JSON的响应的推荐方法。