获取req.param未定义

时间:2014-05-08 17:43:43

标签: node.js express

我正在使用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.bodyreq.params,但答案仍然相同。

5 个答案:

答案 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中的任何一个。查找顺序为paramsbodyquery

答案 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在路由中定义));