2016-08-17 8 views
0

Просто начиная с узла, экспресс и MongoDB (мангуста), и это то, что я пытаюсь сделать:Передача переменных (на стороне сервера/на стороне клиента) узел JS

  1. получить параметры из нефрита файл обратно в индекс .js через форму ✔
  2. результат запроса в index.js ✔
  3. , а затем вернуть результат обратно в нефрита и отобразить его ✖

search.jade

form(action='/searchByTitle', method='get') 
    input(type='text' name ='docTitle' placeholder='Title') 
    input(type="submit" value = 'submit') 

index.js

... 
var Document = require('../models/document'); 
... 

router.get('/search', function(req, res){ 
     res.render('search'); 
}); 

router.get('/searchByTitle', function(req, res){ 

    var title = req.param('docTitle'); 

    Document.find({ title: title }, function(err, doc) { 
     if (err) throw err; 
      console.log(doc); 
     });   
}); 

в console.log(doc) Я получаю JSON объект:

[ { _id: 57b4725b3cd1c8a028a6f686, 
    title: 'title123', 
    category: 'category123', 
    author: 'Anne', 
    date: Thu Aug 25 2016 02:00:00 GMT+0200 (Central European Daylight Time), 
    version: 1, 
    file: 'test.txt', 
    __v: 0 } ] 

Как передать этот объект обратно search.jade, так что я могу показать это на странице?

Я знаю, что могу сделать res.render('search', {doc: doc});, но к тому времени, когда оно отображается, страница уже отображается. Нужно ли мне как-то менять маршруты?

passing values

+1

Вы пробовали res.json (doc)? – CamiloR

+0

Он работает, он отображается в браузере, но моя проблема заключается в том, как отображать его рядом с формой поиска в search.jade .. – bobby

ответ

1

Отрендерьте search.jade еще раз от searchByTitle.

router.get('/searchByTitle', function(req, res){ 

var title = req.param('docTitle'); 

Document.find({ title: title }, function(err, doc) { 
    if (err) throw err; 
     console.log(doc); 
     res.locals.doc = doc; 
     res.render('search'); 
    });   
}); 

Тогда используйте использование документа в поиске.jade.

form(action='/searchByTitle', method='get') 
input(type='text' name ='docTitle' placeholder='Title') 
input(type="submit" value = 'submit') 
if(doc) 
    //render the doc. 
+0

Работал как шарм! res.locals - это решение .. спасибо! – bobby

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