Javascript bodyParser如何知道在req.body中填充哪个视图?

Javascript bodyParser如何知道在req.body中填充哪个视图?,javascript,node.js,post,express,body-parser,Javascript,Node.js,Post,Express,Body Parser,在下面的代码中,我们有一个视图,即fruitPicker.html因此bodyParser应该如何填充req.body app.js: var express = require('express') , app = express() , cons = require('consolidate'); app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', __dirname + '

在下面的代码中,我们有一个视图,即
fruitPicker.html
因此bodyParser应该如何填充
req.body

app.js:

var express = require('express')
  , app = express()
  , cons = require('consolidate');

app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.use(express.bodyParser());
app.use(app.router);


// Handler for internal server errors
function errorHandler(err, req, res, next) {
  console.error(err.message);
  console.error(err.stack);
  res.status(500);
  res.render('error_template', {error: err});
}

app.use(errorHandler);

app.get('/', function(req, res, next) {
  res.render('fruitPicker', {
    'fruits' : ['apple', 'orange', 'banana', 'peach']
  });
});

app.post('/favorite_fruit', function(req,res,next) {
  var favorite = req.body.fruit;
  if (typeof favorite == 'undefined') {
    next(Error('Please choose a fruit!'));
  }
  else {
    res.send("Your favorite fruit is " + favorite);
  }
});

app.listen(3030);
console.log('Express server listening on port 3030');
fruitPicker.html:

<html>
  <head><title>Fruit Picker</title></head>
  <body>
    <form action="/favorite_fruit" method="POST">
      <p>What is your favorite fruit?</p>
      {% for fruit in fruits %}
        <p>
          <input type="radio" name="fruit" value="{{fruit}}">{{fruit}}</input>
        </p>
      {% endfor %}
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>
<!doctype HTML>

水果采摘机
你最喜欢的水果是什么

{水果中的水果%} {{水果}

{%endfor%}
如果我们有多个视图,比如
fruitPicker.html
drinksPicker.html
?我想,
bodyParser
会从我们当前的最新视图中填充
req.body
,对吗?然后,我们如何将此信息传达给app.post,以便post可以根据每个信息返回不同的响应(您最喜欢的水果是…,或者您最喜欢的饮料是?我们只有一个通用变量
req.body
,它不区分水果和饮料,那么
app.post
怎么知道呢?是不是只有我们才能给收音盒命名不同的名称,并将
req.body.fruit
req.body.drink
分配给收藏夹?这似乎不是很健壮,因为我们可能会有一些实例,在这些实例中,我们不经意间为输入无线电框指定了相同的名称(它们毕竟位于不同的文件中),并且可能导致难以调试,不是吗?如果bodyParser构建在它来自的回溯路径中会更好,不是吗? 您可以这样做:

   for(var x in req.body){
      if(x=='fruit'){
        res.send("Your favorite fruit is " + req.body[x] );
      }
    else if(x=='drink'){
        res.send("Your favorite drink is " + req.body[x] );
      }
}

“x”指的是什么?输入的名称属性?是。它指的是输入字段的名称。在OP中,我提到这不是很健壮。当然,bodyParser能够跟踪操作来自哪个视图,这一定是一个特性。我查看了文档,但找不到传递此信息的变量。