node.js - express无法获取req.params值?
问题描述
var express = require(’express’);var bodyParser = require(’body-parser’)var port = process.env.PORT || 3000var app = express()var path = require(’path’);var mongoose = require(’mongoose’)var _ = require(’underscore’)var fs = require(’fs’);var jsonParser = bodyParser.json()var urlencodedParser = bodyParser.urlencoded({ extended: false })mongoose.connect(’mongodb://localhost/meetdb’)app.set(’views’, ’./views/pages’)app.set(’view engine’, ’jade’)app.use(urlencodedParser);app.use(express.static(path.join(__dirname, ’public’)))app.listen(port)// user 相关app.post(’/user/signup’,function (req,res){ console.log(req.params) console.log(req.body)})
可以获取到req.body,但是无法获取到req.params。我看网上说的是可以同时获取query和body的值。
问题解答
回答1:通常是req.params吧,来获取路径中的参数
回答2:据我了解,req.params 只有在参数化的路径中的参数。你想取的是查询字符串中的参数吗?
查询字符串中的参数要用 req.query.
比如
// server.js: app.post(’/user/:id’, function(req, res){console.log(’req.params: ’, req.params)console.log(’req.query: ’, req.query)console.log(’req.body: ’, req.body) })
// HTTP request:POST /user/123?foo=1&bar=2Content-Type: application/x-www-form-urlencodedaaa=1&bbb=2
这样的请求,应该是要用 req.query.foo 和 req.query.bar 来获取 foo 和 bar 的值,最终打印出如下:
req.params: { id: ’123’ }req.query: { foo: ’1’, bar: ’2’ }req.body: { aaa: ’1’, bbb: ’2’ }
话说这种问题 console.log 的效率太慢,为啥不用断点:
看看用VSCode打断点查看变量爽爆了。
回答3:/user/signup 这里 /user/signup/:aaa 你才有params
相关文章:
1. mysql - JAVA怎么实现一个DAO同时实现查询两个实体类的结果集2. sql语句 - 如何在mysql中批量添加用户?3. mysql建表报错,查手册看不懂,求解?4. PHP类属性声明?5. 求大神支招,php怎么操作在一个html文件的<head>标记内添加内容?6. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。7. 致命错误: Class ’appfacadeTest’ not found8. 老师们php,插入数据库mysql,都是空的,要怎么解决9. mysql - 数据库建字段,默认值空和empty string有什么区别 11010. phpstady在win10上运行
