Express und ejs <% =, um einen JSON zu rendern


76

In meiner index.ejs habe ich diesen Code:

var current_user = <%= user %>

In meinem Knoten habe ich

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})

Allerdings erhalte ich auf der Seite

var current_user = [object Object]

und wenn ich schreibe

var current_user = <%= JSON.stringify(user) %>

Ich erhalte:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...

Gibt es eine Möglichkeit, einen JSON zu übergeben, der JS-lesbar ist ?

Antworten:


190

Oh, das war einfach, benutze es nicht <%=, benutze es <%-stattdessen. Zum Beispiel:

 <%- JSON.stringify(user) %>

Der erste wird in HTML gerendert, der zweite wird Variablen rendern (wie sie sind, eval)


23
Richtige Antwort, aber um genau zu sein, es ist <% - JSON.stringify (Benutzer)%>, die die Magie wiedergibt.
Pierre Maoui

Wird die Eval-Funktion tatsächlich verwendet oder implizieren Sie, dass die Ergebnisse ähnlich sind, wenn Eval aufgerufen wurde? Ich bin neugierig, denn wie wir alle wissen, ist eval ...
NicholasFolk

1
Ok, aus Neugier habe ich mich darauf eingelassen und festgestellt, dass tatsächlich eval () verwendet wird. Ich sollte auch hinzufügen, dass ich weiß, dass es ein oft nachgeahmtes Sprichwort ist und dass die Bewertung nicht unbedingt böse ist, sondern nur leicht missbraucht wird. Musste das erwähnen, bevor ich einen Zorn unter den Massen hervorrief.
NicholasFolk

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.