web-dev-qa-db-fra.com

Passer des objets au client dans node + express + jade?

J'ai une requête assez lourde sur le serveur qui se traduit par un nouveau rendu de page, et je voudrais transmettre certains des résultats de la requête au client (sous forme de tableau javascript d'objets). C'est essentiellement ainsi je n'ai pas à faire une requête JSON distincte plus tard pour obtenir le même contenu (qui est principalement statique). Les données seront utiles à terme, mais pas au départ donc je ne les ai pas mises directement dans le document.

app.get('/expensiveCall', function(req, res) {
    // do expensive call
    var data = veryExpensiveFunction();
    res.render('expensiveCall.jade', {
        locals: {
                data: data,
                }
        });
    });
});

les données sont un tableau d'objets et seuls certains sont initialement utilisés. Je voudrais transmettre l'intégralité des données ou certains sous-ensembles (selon la situation). Mon jade ressemble à du jade normal, mais je voudrais inclure quelque chose comme

<script type="text/javascript">
var data = #{data};
</script>

mais cela ne fonctionne pas (c'est un tableau d'objets).

42
killermonkeys

Vous ne pouvez pas aligner un objet JS comme ça, mais vous pouvez JSON.stringify avant:

<script type="text/javascript">
  var data = !{JSON.stringify(data)};
</script>
89
Adrien