NodeJS Express在重定向

时间:2016-06-27 06:20:13

标签: javascript node.js express

我有一个post函数,它从视图中获取一些信息,并将处理后的值存储在函数范围内声明的变量中

   router.post('/searchbook', function(req, res, next){
    var s_book_name="n/a";
    var s_author_name="n/a";
    var s_isbn13_id="n/a";

    var isbn=req.body.isbn;
    var url="http://isbndb.com/api/v2/json/63JEP95R/book/"+isbn;
    request({
    url: url,
    json: true
    }, function (error, response, body) {
          if (!error && body.data!=null && response.statusCode === 200) {
                if(body.data[0].title!=null)
                  s_book_name=body.data[0].title;
                if(body.data[0].author_data[0]!=null)
                  s_author_name=body.data[0].author_data[0].name;
                if(body.data[0].isbn13!=null)
                  s_isbn13_id=isbn;
              }
          else 
          { error="Book not found. Please enter the information manually.";
            res.redirect('/newbook');
          }
    }).then(function() {
        res.redirect('/newbook2');
      });
    });

现在我有一个get函数,应该将此信息发送到另一个视图。

router.get('/newbook2', function(req, res){
    res.render('newbook2', {title: 'Add New Book',s_book: s_book_name, s_author: s_author_name, s_isbn13: s_isbn13_id ,s_publisher: s_publisher_name , s_category: s_category_id});
    });

但视图中的信息始终显示为未定义。我相信get函数中使用的值超出了范围。我应该使用全局变量吗?还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

您应该使用app#locals在整个应用中设置变量。

或者您可以使用查询字符串参数传递数据并使用

访问它

没有expressJs

var url  = require('url');

http.createServer(function(req,res){
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;

    console.log(query); //
})

使用expressJS,您可以使用req#query

app.get('/path',function(req,resp){
      req.query // get querystring 
})