如何在NODE JS Express中从控制器传递信息

时间:2016-06-25 16:00:28

标签: javascript node.js express

我对NodeJS很新。我正在尝试创建一个接受多个输入的表单。表单的一个功能是接受输入 - > ISBN并自动从API获取信息并将其添加到输入字段中。但是,我无法将信息从控制器传递到视图。

我有一个观点:newbook.jade 其中有两种形式

 form#form_search_book(name="search", method="post", action="/searchbook")
    span ISBN
    span  
    input#input_isbn(type="text", placeholder="isbn", name="isbn")
    button#search_book(type="search") search
    br
    br
  form#form_add_book(name="addbook", method="post", action="/addbook")
    span Book Name
    span  
    input#input_name(type="text", placeholder="book name", name="book_name")

我有NodeJS控制器:index.js执行/ searchbook表单,然后重定向回/ newbook页面。当它重定向到新的书页时,来自API的信息应该传递到输入表单......但我一直在努力如何做到这一点。 任何帮助将不胜感激。

    router.get('/newbook', function(req, res){
    res.render('newbook', {title: 'Add New Book' });

    router.post('/searchbook', function(req, res){
    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 && response.statusCode === 200) {
                console.log(body.data\[0\].isbn13) // Print the json response
              }
    });
    res.redirect('/newbook');
    document.getElementById('input_name').value=body.data\[0\].title;
    document.getElementById('input_isbn').value=body.data\[0\].isbn13;


    });
});

Link to the view

1 个答案:

答案 0 :(得分:1)

我认为您对在客户端运行的代码以及在服务器端运行的代码感到困惑。 此代码仅适用于不在NodeJS中的浏览器。

document.getElementById('input_name').value='......';

您需要通过重定向方法中的查询字符串传递值。

我认为你可以在这篇文章中找到答案: How do I redirect in expressjs while passing some context?