2016-05-17 24 views
2

Ich versuche, Daten aus 2 verschiedenen Quellen zu verwenden, aber rendere sie auf der gleichen HTML-Seite mit EJS, JS und Knoten. Das ist, was ich versuche ..Kann ich mehrere Quellen in EJS rendern

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

Daten ist ein JSON, Daten2 ein Array ist. Ich habe versucht, für diesen genauen Prozess die richtige Syntax nachzuschlagen, kann aber nichts finden.

Vielen Dank.

Antwort

2

Sie können nicht mehr als einmal auf eine einzelne Anforderung rendern.

Aber Sie könnten einfach Ihre JSON-und Array-Daten kombinieren und stringifizieren.

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

Oder einfach beide Variablen zu einem einzigen Objekt zuweisen und an die Funktion machen analysieren

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

Danke, das hat funktioniert! Jetzt stelle ich fest, dass ich Daten zu arrayData schiebe, aber EJS rendert die Seite, bevor es fertig ist, meine Daten zu arrayData zu schieben ... Gedanken darüber, wie ich das möglicherweise beheben könnte. – TheGirl440

+0

Ich bin mir nicht sicher, was du meinst? Könnten Sie eine weitere Frage zu diesem Thema mit etwas mehr Details stellen? Auch wenn diese Antwort Ihnen geholfen hat, sollten Sie es akzeptieren :) @ TheGirl440 – James111

+0

@ James111: Hallo, ich habe Ihre Antwort gefunden und ich habe diese [Frage] (http://stackoverflow.com/questions/37616719/pass-a-variable -from-javascript-to-ejs) welches bereits beantwortet ist aber ich habe es aktualisiert und ich möchte herausfinden wie ich zwei res.render in verschiedenen Dateien aufrufen kann. Wenn du eine Lösung hast, werde ich natürlich upvote.Thanks! – George

1

Sie können nicht mehr machen als einmal auf eine einzelne Anfrage.

Aber wenn Sie verschiedene Arten von Daten wie angezeigt werden soll:

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 ist ein Schema. und Ergebnisse sind wie

[ { _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' } ]

so "Ergebnisse" und Fullname verschiedene Arten von json ist und Sie können es auch senden.

Schließlich ist die obere (1) Lösung auch gleichartige json-Datei. Danke. Hoffe es wird dir helfen. :)