2016-04-06 15 views
0

zurückgeben Ich habe diese Express-Anwendung mit MongoDB als Datenbank und Lenker als meine Server-seitige Templating-Engine. Ich verwende AngularJS oder Ajax nicht in meiner Anwendung.Node.js: Richtiges JSON aus Mungo-Abfrage

In einer der Routen, muss ich die Seite rendern sowie über eine JSON-Datei aus der Datenbank senden. Dies kann ich jedoch nicht erreichen.

Hier ist Code, um die meine Strecke Snippet:

router.get('/disks', function(req, res, next) { 
    places.find({"category": "disks"}, function(err, disks){ 
     if(err){ 
     throw err; 
     } 

     res.render('disks', 
     { 
      'risime': JSON.stringify(disks) 
     }); 
     console.log(disks); // PROPERLY LOGS TO THE CONSOLE 
    }); 
}); 

In dem hbs, ich versuche, es zu erfassen, aber ich glaube nicht einmal, dass es JSON ist.

Hier ist, wie es in der Client-Seite protokolliert wird:

[{"_id":"5704630a7d4cd367f8dsdce7","name":"Seagate",:"This awesome Hard disk",","categories":["SDD","256GB"]}] 

Was ist das Problem und wie ich sie lösen?

Antwort

1

Es ist Lenker, dass "html" Ihre Zeichenfolge (was Sie normalerweise wollen) entkommt.

, wenn Sie nicht wollen, dass, können Sie die "Triple-Stash" Notation wie folgt verwenden:

{{{risime}}} 

Sie können dies hier lesen Sie über: http://handlebarsjs.com/#html-escaping

+0

Ähm, was sind die Nachteile des Ignorierens der HTML-Escape-Zeichen? – QuikProBroNa

+0

Sicherheit. Wenn die Zeichenkette von einer nicht vertrauenswürdigen Quelle kommt (zB Benutzereingabe), könnte die Zeichenkette unsicher sein und ohne es zu entkommen könnte sie leicht HTML-Tags enthalten (wie '

0

Ich glaube, Sie brauchen diese hinzufügen, bevor machen:

res.type('application/json'); 

Der Kunde wird wissen, dass dies ein JSON, kein HTML oder Nur-Text, und es wird korrekt angezeigt.

Ich hoffe meine Antwort wird Ihnen helfen.

+0

Ähm, aber ich bin auch using res.render() Wird dies nicht beeinflusst? – QuikProBroNa

+0

Ich habe es ausprobiert, das funktioniert nicht mit res.render(). Es zeigt nur meine Seite als Klartext anstelle einer Webseite an. – QuikProBroNa