在Express中查询参数

Jim*_*m M 3 query-parameters node.js express

我试图使用Node.js中的Express访问查询参数.出于某种原因,req.params不断出现作为一个空对象.这是我的代码server.js:

const express    = require('express');
const exphbs     = require('express-handlebars');
const bodyParser = require('body-parser');
const https      = require('https');

//custom packages  ..
//const config  = require('./config');
const routes  = require('./routes/routes');


const port = process.env.port || 3000;


var app = express();

//templating engine Handlebars
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');





//connect public route
app.use(express.static(__dirname + '/public/'));


app.use(bodyParser.json());

//connect routes
app.use('/', routes);






app.listen(port,  () => {
    console.log( 'Server is up and running on ' + port );
});
Run Code Online (Sandbox Code Playgroud)

这是我的路线文件:

//updated
const routes = require('express').Router();


routes.get('/', (req, res) => {
  res.render('home');
});



routes.post('/scan',  (req, res) => {
    res.status(200);

    res.send("hello");
});



routes.get('/scanned',  (req, res) => {

    const orderID = req.params;
    console.log( req );

    res.render('home', {
        orderID
    });
});

module.exports = routes;
Run Code Online (Sandbox Code Playgroud)

当服务器启动并运行时,我正在导航到http://localhost:3000/scanned?orderid=234.我当前在该routes.js文件中的控制台日志显示一个空主体(不识别orderidURL中的参数).

Abh*_*hek 8

orderid在请求中是查询参数.它需要通过req.query对象访问而不是req.params.使用以下代码访问orderid请求中传递的内容:

const orderID = req.query.orderid
Run Code Online (Sandbox Code Playgroud)

现在您应该能够234在请求URL中传递值.

或者尝试用以下代码替换路线代码/scanned:

routes.get('/scanned',  (req, res) => {

  const orderID = req.query.orderid
  console.log( orderID ); // Outputs 234 for the sample request shared in question.

  res.render('home', {
    orderID
  });
});
Run Code Online (Sandbox Code Playgroud)