传递变量(服务器端/客户端)节点js

时间:2016-08-17 15:11:27

标签: node.js mongodb express mongoose

刚开始使用node,express和mongodb(mongoose),这就是我想要做的事情:

  1. 通过表单✔
  2. 将jade文件中的参数返回到index.js
  3. 在index.js中查询结果✔
  4. 然后将结果返回给jade并显示它✖
  5. 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 个答案:

答案 0 :(得分:1)

再次从searchByTitle渲染search.jade。

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

然后使用search.jade中的doc。

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