2016-04-06 4 views
0

У меня есть это экспресс-приложение с mongoDB в качестве базы данных и рулей в качестве моего серверного механизма шаблонов. Я не использую AnguleJS или Ajax в своем приложении.Node.js: Возвращение надлежащего JSON из запроса мангуста

В одном из маршрутов я должен отобразить страницу, а также отправить через json-файл из базы данных. Однако я не могу этого добиться.

Вот фрагмент кода на мой маршрут:

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 
    }); 
}); 

ОБД, я пытаюсь захватить его, но я даже не думаю, что это JSON.

Вот как он получает вход в стороне клиента:

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

В чем проблема и как решить ее?

ответ

1

Это рули, которые «html ускользает» от вашей строки (это то, что вы обычно хотите).

, если вы не хотите этого, вы можете использовать «тройной копить» обозначение, например:

{{{risime}}} 

Вы можете прочитать об этом здесь: http://handlebarsjs.com/#html-escaping

+0

Каковы недостатки игнорирования символов escape-кода HTML? – QuikProBroNa

+0

Безопасность. Если строка исходит из ненадежного источника (например, пользовательского ввода), строка может быть небезопасной и без какого-либо экранирования она может легко содержать теги html (например, '

0

Я думаю, что нужно добавить это перед визуализацией:

res.type('application/json'); 

клиент будет знать, что это JSON, а не HTML или простой текст, и он будет отображаться правильно.

Надеюсь, мой ответ вам поможет.

+0

Um, но я также using res.render() Не будет ли это затронуто? – QuikProBroNa

+0

Я пробовал, это не работает с res.render(). Он просто отображает мою страницу как обычный текст вместо веб-страницы. – QuikProBroNa

Смежные вопросы