다음과 같이 Google POSTMAN을 통해 넣으려고합니다.
PUT /updateUser/[email protected] HTTP/1.1
Host: localhost:8081
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 3f1e9857-302a-f4cf-4c24-d3222b4bc292
{"email":"[email protected]", "pass":"kkk"}
디버깅 할 때 req.body가 정의되지 않았습니다. 내 코드는 server.js입니다.
var express = require('express')
, app = express()
, mongoose = require('mongoose')
, models = require('./models')
, bodyParser = require('body-parser')
, routes = require('./controllers')
, user = require('./controllers/users.js')
, port = 8081 //process.env.PORT || 3000
app.use(express.static(__dirname + '/public'));
app.use('/', routes);
app.use('/', user);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
module.exports = app;
mongoose.set('debug', true);
mongoose.connect('mongodb://localhost/m101JS', function (err) {
if (err) throw err;
console.log("mongoose connected")
//routes(app);
var server = app.listen(port, function () {
var host = server.address().address
var port = server.address().port
console.log("RESTful Web Services listening at http://%s:%s", host, port)
})
})
users.js
var express = require('express')
, router = express.Router()
, mongoose = require('mongoose')
, User = mongoose.model('User')
, crypto = require('crypto')
, cleanString = require('../helpers/cleanString')
, hash = require('../helpers/hash');
// ......
// Update user
router.put('/updateUser/:id', function (req, res, next) {
var email = cleanString(req.body.email);
var pass = cleanString(req.body.pass);
if (!(email && pass)) {
return invalid(email);
}
crypto.randomBytes(16, function (err, bytes) {
if (err) return next(err);
var user = { _id: email };
user.salt = bytes.toString('utf8');
user.hash = hash(pass, user.salt);
User.findByIdAndUpdate(req.params.id, user, function (err, post) {
if (err) return next(err);
res.json("updated:" + post);
});
});
});
module.exports = router;
이전 server.js와 같은 라우터 클래스를 사용하지 않을 때 작동했습니다.
//....
routes(app);
이전 users.js
module.exports = function (app) {
app.put('/updateUser/:id', function (req, res, next) {
.....
}
그렇다면 users.js에서 body-parser를 볼 수 있도록 현재 코드를 어떻게 수정할 수 있습니까? 모든 파일에서 요구할 필요는 없습니다.
감사,
미들웨어 구성 순서는 Express js에서 중요합니다. 구성에서 먼저 라우터 매핑을 지정한 다음 본문 파서 미들웨어를 지정했습니다. 먼저 본문 파서를 구성한 다음 라우터 매핑을 구성하기 만하면됩니다.
특급 :
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public'));
app.use('/', routes);
app.use('/', user);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다