2016-05-17 3 views
2

Я пытаюсь использовать данные из двух разных источников, но визуализацию их на одной и той же странице HTML с помощью EJS, JS и узла. Это то, что я пытаюсь ..Могу ли я отображать несколько источников в EJS

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

Вы не можете визуализировать более одного раза для одного запроса.

Но вы можете просто объединить данные 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}); 
+0

Спасибо, это сработало! Теперь я понимаю, что я нажимаю данные на arrayData, но EJS выполняет рендеринг страницы до того, как она закончит толкать мои данные в arrayData ... мысли о том, как я могу это исправить. – TheGirl440

+0

Я не уверен, что вы имеете в виду? Не могли бы вы задать еще один вопрос по этому вопросу чуть подробнее? Также, если этот ответ вам помог, вы должны принять его :) @ TheGirl440 – James111

+0

@ James111: Здравствуйте, я нашел ваш ответ, и у меня есть этот вопрос [http://stackoverflow.com/questions/37616719/pass-a-variable -from-javascript-to-ejs), на который уже был дан ответ, но я обновился, и я хочу узнать, как я могу вызвать два 'res.render' в разных файлах. Если у вас есть решение, я, конечно же, вернусь. Спасибо! – George

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 является Schema. и результаты, как

[ { _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-файла того же типа. Спасибо. Надеюсь, это поможет вам. :)