2017-04-22 4 views
1

Node.js에서 Express를 사용하여 쿼리 매개 변수에 액세스하려고합니다. 웬일인지 req.params는 빈 객체로 올라오고 있습니다. 여기Express의 쿼리 매개 변수

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); 
}); 

그리고 내 경로 파일입니다 :

//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; 

서버 및 실행

, 나는 http://localhost:3000/scanned?orderid=234로 이동하고 여기 server.js 내 코드입니다. 현재 routes.js 파일에있는 콘솔 로그에 빈 본문이 표시됩니다 (URL에 orderid 매개 변수가 인식되지 않음).

답변

4

orderid은 쿼리 매개 변수입니다. req.params이 아닌 req.query 개체를 통해 액세스해야합니다. 요청에 전달 된 액세스 orderid에 코드 아래 사용

const orderID = req.query.orderid 

이제 요청 URL에 전달 234 값을 얻을 수 있어야합니다.

또는 아래로 경로 /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 
    }); 
}); 
1

req.body 빈 객체로 올라오고 계속하는 이유는 그 같은 존재, 탐색에서 브라우저에 의해 만들어진 것과 같은 get 요청에 본문 개체가 아닙니다. get 요청에서 쿼리 문자열에 액세스하려는 주문 ID가 포함되어 있습니다. 쿼리 문자열이 url에 추가됩니다. 코드는 다음과 같이 쓸 수있다 :

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

    const orderID = req.query.orderid 
    console.log(req); 

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

주의 사항,하지만 당신은 당신의 클라이언트 측 코드 내에서 발사 AJAX 게시물이있는 경우, 귀하의 req.body가 비어되지 않습니다, 당신이 그것을 분석 할 수 있다는 것입니다 평소처럼 .