我可以在EJS中渲染多个源

时间:2016-05-17 22:39:52

标签: javascript node.js express ejs templating

我试图使用来自2个不同来源的数据,但是使用EJS,JS和节点在同一个HTML页面上渲染它们。 这就是我想要的......

app.set('view engine', 'ejs');
app.get('/', function(req, res) {
  res.render('index.ejs', { data: JSONdata })
  res.render('index.ejs', {data2: arrayData})
});

数据是JSON,data2是数组。我试图为这个确切的过程查找正确的语法,但似乎无法找到任何东西。

非常感谢。

2 个答案:

答案 0 :(得分:2)

您无法多次呈现单个请求。

但是你可以简单地组合你的JSON和数组数据并将其字符串化。

App.set('view engine', 'ejs');
app.get('/', function(req, res) {
  res.render('index.ejs', JSON.stringify({data2: arrayData, data1: JSONdata}))
});

或者简单地将两个变量分配到单个对象中并将其解析为渲染函数

var returnVals= JSON.stringify({data2: arrayData, data1: jsonData}); 

答案 1 :(得分:1)

您不能多次渲染一个请求。

但是如果你想显示不同类型的数据,比如:

SSCResult.find({username:username},function (err, results) {
  var username=req.user.username;
  var fullname =req.user.firstname+' '+req.user.lastname;
  if (err) return console.error(err);

  console.log(results);

  res.render('sscandhsc',{fullname:fullname,results});
  
});

SSCResult是一个架构。结果就像

[ { _id: 59f61fe2fec3cc7bf804f95e,
    examtype: 'HSC',
    username: '1',
    __v: 0,
    gpa: '5.00',
    institution: 'New Govt. Degree College, Rajshahi',
    passedyear: '2013',
    board: 'Rajshahi' },
  { _id: 59f6408efec3cc7bf804fc78,
    examtype: 'SSC',
    username: '1',
    __v: 0,

    gpa: '5.00',
    institution: 'Taragunia High School',
    passedyear: '2011',
    board: 'Jessore' },
  { _id: 59f656a9fec3cc7bf8050146,
    examtype: 'JSC',
    username: '1',
    __v: 0,
    gpa: '5.00',
    institution: 'Taragunia High School',
    passedyear: '2008',
    board: 'Jessore' } ]

  

所以“结果”和全名是不同类型的json,你也可以发送它。

最后,上层(1)解决方案也是相同类型的json文件。 谢谢。希望它会对你有所帮助。 :)