2017-10-15 24 views
0

私は平均スタックを学習しようとしていますが、私は1つの問題に直面しています。私は小さなエクスプレスアプリを開発しました。しかし、私はこれを理解できませんでした。req.bodyから送信されたデータが返されない

私はAngular Http Serviceを使用してフォームデータを投稿しています。

投稿メソッドを使用してデータを送信するサービスコード。サーバー側では

createUser(user: User): Observable<User> { 
const submittedUser = JSON.stringify(user); 
console.log("submitted:", submittedUser); 
const headers = new Headers ({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
const options = new RequestOptions({headers: headers}); 
return this.http.post('http://localhost:3000/user/create', submittedUser, options) 
    .map((response: Response) => {response.json()}) 
    .catch((error:Response) => Observable.throw(error.json())); 

}

私はapp.jsと1つのルータのファイルを持っています。

'use strict'; 

var express = require('express'); 
var path = require('path'); 
var morgan = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 

var userRoutes = require('./routes/userRoutes'); 

var app = express(); 
mongoose.connect('mongodb://localhost/go-social'); 

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hbs'); 

app.use(morgan('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: true})); 

app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use(function(req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); 
    res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS'); 
    next(); 
}); 

app.use('/user', userRoutes); 

app.use(function(req, res, next) { 
    return res.render('error'); 
}); 

app.listen(3000, function() { 
    console.log("App listening on port 3000"); 
}) 

これはルータファイルです。 userRoutes.js

enter var express = require('express'); 
var router = express.Router(); 
var bcrypt = require('bcryptjs'); 
var jwt = require('jsonwebtoken'); 
var User = require('../models/user'); 
router.post('/create', function (req, res) { 

    console.log(req.body); 
    var user = new User({ 
     firstName: req.body.firstName, 
     lastName: req.body.lastName, 
     email: req.body.email, 
     password: req.body.password 
    }); 
    user.save(function(err, result) { 
     if(err) next(err); 
     res.status(201).json({ 
      message: "Your account has been created successfully", 
      obj: result 
     }); 
    }); 
}); 

私はPostmanを使用すると動作しますが、Httpサービスでは動作しません。私はreq.bodyをオブジェクトとして私のサブミットされたオブジェクトと共にコンソールに入れています。

{ '{"firstName":"Myname","lastName":"sadf","email":"[email protected]","password":"awe"}': '' } 

答えて

2

変更

const headers = new Headers ({ 'Content-Type': 'application/json' }) 
+0

const headers = new Headers ({ 'Content-Type': 'application/x-www-form-urlencoded' }) 

からそう私はちょうどそれを解決しました。ありがとう –

+0

クール!これが役に立ったら – Sajeetharan

関連する問題