Javascript 从expressjs呈现数据

Javascript 从expressjs呈现数据,javascript,node.js,object,express,Javascript,Node.js,Object,Express,我正在使用expressjs来呈现包含一些数据的页面。我发送给客户端的响应中有多个对象。我写的代码如下- app.js var express = require('express'); var path = require('path'); var app = express(); var port = process.env.PORT || 5000; var delivCount = require('./serv_delivered.js'); var serv_ontime = r

我正在使用expressjs来呈现包含一些数据的页面。我发送给客户端的响应中有多个对象。我写的代码如下-

app.js

var express = require('express');
var path = require('path');
var app = express();
var port = process.env.PORT || 5000;

var delivCount  = require('./serv_delivered.js');
var serv_ontime = require('./serv_ontime.js');
var delayedCount = require('./serv_delayed.js');
var crtidelayedCount = require('./serv_crit_delayed.js');
var chartData = [{
        "country": "Czech",
        "litres": 301.9
    }, {
        "country": "Ireland",
        "litres": 201.1
    }, {
        "country": "Germany",
        "litres": 165.8
    }, {
        "country": "Pak",
        "litres": 139.9
    }, {
        "country": "Austria",
        "litres": 128.3
    }, {
        "country": "UK",
        "litres": 99
    }] ;

app.use(express.static(path.join(__dirname, 'public')));
app.set('views', __dirname + '/src/views');

var bookRouter= express.Router();
app.set('view engine','ejs');

app.get('/',function(req,res){
            delivCount(function(error, res_deliv){
                serv_ontime(function(error, res_ontime){
                    delayedCount(function(error, res_delayed){
                        crtidelayedCount(function(error, res_cdelayed){
                            /* res.render('index', {title: "Hello From Render",
                                    res: {res_deliv,res_ontime,res_delayed,res_cdelayed,chartData}     
                                }); */
                                //console.log(result);
                                res.send({res_deliv,res_ontime,res_delayed,res_cdelayed,chartData});
                        });
                    });
                });
            });
    }); 

app.listen(port,function(err){
    console.log('running server on port'+ port);
});
<html>
  <head>
      <title>
        </title>
  </head>
<body>

<p>Count 1 = <%= res.res_deliv.CNT_DELIV %> </p>
<p>Count 1 = <%= res.res_ontime.CNT_ONTIME%> </p>
<p>Count 1 = <%= res.res_delayed.CNT_DELAYED%> </p>
<p>Count 1 = <%= res.res_cdelayed.CNT_CDELAYED%> </p>
<p>Chart data: =<%res.chartData%> </p>

</body>
</html>
index.ejs

var express = require('express');
var path = require('path');
var app = express();
var port = process.env.PORT || 5000;

var delivCount  = require('./serv_delivered.js');
var serv_ontime = require('./serv_ontime.js');
var delayedCount = require('./serv_delayed.js');
var crtidelayedCount = require('./serv_crit_delayed.js');
var chartData = [{
        "country": "Czech",
        "litres": 301.9
    }, {
        "country": "Ireland",
        "litres": 201.1
    }, {
        "country": "Germany",
        "litres": 165.8
    }, {
        "country": "Pak",
        "litres": 139.9
    }, {
        "country": "Austria",
        "litres": 128.3
    }, {
        "country": "UK",
        "litres": 99
    }] ;

app.use(express.static(path.join(__dirname, 'public')));
app.set('views', __dirname + '/src/views');

var bookRouter= express.Router();
app.set('view engine','ejs');

app.get('/',function(req,res){
            delivCount(function(error, res_deliv){
                serv_ontime(function(error, res_ontime){
                    delayedCount(function(error, res_delayed){
                        crtidelayedCount(function(error, res_cdelayed){
                            /* res.render('index', {title: "Hello From Render",
                                    res: {res_deliv,res_ontime,res_delayed,res_cdelayed,chartData}     
                                }); */
                                //console.log(result);
                                res.send({res_deliv,res_ontime,res_delayed,res_cdelayed,chartData});
                        });
                    });
                });
            });
    }); 

app.listen(port,function(err){
    console.log('running server on port'+ port);
});
<html>
  <head>
      <title>
        </title>
  </head>
<body>

<p>Count 1 = <%= res.res_deliv.CNT_DELIV %> </p>
<p>Count 1 = <%= res.res_ontime.CNT_ONTIME%> </p>
<p>Count 1 = <%= res.res_delayed.CNT_DELAYED%> </p>
<p>Count 1 = <%= res.res_cdelayed.CNT_CDELAYED%> </p>
<p>Chart data: =<%res.chartData%> </p>

</body>
</html>

计数1=

计数1=

计数1=

计数1=

图表数据:=

现在,当我只使用res.send时,我在本地主机上得到的输出如下-


此外,当我使用res.render并传递相同的值,并尝试使用客户端上的这些值,如index.ejs中所做的那样,我在所有这些位置都得到了“未定义”的结果,并且没有显示数据。有人能帮我在客户端使用这些数据吗?

Afaik,您可以使用
res.render('index',{chartData:chartData}),将数据对象传递给模板引擎。传递对象的键可用于访问模板内的值。是。我让它工作了。我将符号更改为array,并访问如下元素:。这起作用了。