我正在使用Expressjs版本4.我在req.param上得到'undefined'。这是我的例子: app.js
var express = require('express');
var bodyParser = require('body-parser');
var newdata = require('./routes/new');
........................
......................
app.use(bodyParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use('/new', newdata);
./路由/新
var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
res.render('newdata', {
title: 'Add new data'
})
});
router.post('/', function(req, res){
console.log(req.param['email']);
res.end();
});
module.exports = router;
newdata.html
<form action="/new" role="form" method="POST">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" name="email" placeholder="Enter email">
我也尝试使用req.body
和req.params
,但答案仍然相同。
答案 0 :(得分:30)
req.params
指路线路径中的变量。
app.get("/posts/:id", ...
// => req.params.id
可以通过req.body
app.post("/posts", ...
// => req.body.email
这假设您使用的是bodyParser
中间件。
然后有req.query
,?query=strings
。
您可以将req.param()
用于上述3中的任何一个。查找顺序为params
,body
,query
。
答案 1 :(得分:4)
param是一个函数,而不是一个对象。所以你需要使用req.param('email');
答案 2 :(得分:0)
对于遇到类似问题的任何人,请确保使用 params 代替param。
// Correct way
req.params.ID
// Wrong way
req.param.ID
答案 3 :(得分:0)
当我想访问 req.params.id
时我也遇到了这个问题,但我通过
index.js(main)
app.use('/addRoom', route);
router.js(路由器)
route.post('/:id',(req,res)=>{});
这对我有用
答案 4 :(得分:-1)
存在两种类型的参数
1.查询(req.query。('路线中定义的名称'));
2. path(req.params。('name在路由中定义));