2017-09-23 8 views
0

私はこの質問が既に尋ねられ、答えられていることを知っています。しかし、私はすべてのアドバイスに従って、それは私が仮定されている方法でやったが、それはまだ私のために働いていない。ここでreq.bodyは常に定義されていません

は私app.jsである:ここでは

const express  = require('express'); 
const bodyParser = require('body-parser'); 
const cors   = require('cors'); 

const app = module.exports = express(); 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
app.use(cors()); 

は私server.jsです:ここでは

const server = require('./dependencies/app'); 
const connectionHelper = require('./databaseOperations/connectionHelper'); 
const process = require('process'); 
const routes = require("./routes"); 

connectionHelper.establishConnection; 

process.on('exit', function() 
{ 
    connectionHelper.closeConnection; 
}); 

routes(server); 

server.listen(3000); 

は私routes.jsです:

最後に
const tweetHandler = require("./handler/tweetHandler"); 
const userHandler = require("./handler/userHandler"); 

let createRoutes = function(app) 
{ 
    app.post('/submitTweet', tweetHandler.handleTweet); 
    app.get('/login', userHandler.login); 
} 

module.exports = createRoutes; 

さえずりハンドラエラーをスローする:

const Tweet = require("../schema/tweetSchema"); 


module.exports = { 
    handleTweet: function (res, req) 
     { 
      console.log(req.body); 
      if (req.body.topic && req.body.tweet) { 
       let tweet = new Tweet({topic: req.body.topic, tweet: req.body.tweet}); 

       let promise = tweet.save(); 

       promise.then(function (result) { 
        console.log("Result ", result); 
        res.status(200).send({message: "Tweet was successfully submitted"}); 
       }) 
      } 
      else { 
       res.status(401).send({message: "You need to provide a topic as well as a tweet"}); 
      } 
     } 
    }; 

私は取得していますエラーは次のとおりです。私は本当にここで私のエラーを理解していないと私はそれが本当にばかなものであると確信していますTypeError: Cannot read property 'topic' of undefined

私は郵便配達員でテストしています。はい、x-www-form-urlencodedオプションを使用しています。

誰かが迷っていることを教えてもらえますか?

もう1つの問題は、res.statusが関数として認識されていないことです。あなたがそれに答えることができれば、驚くべきことに、reqまたはresのすべての関数呼び出しはエラーを投げます!

答えて

6

function (res, req)からfunction(req, res)に変更してください。リクエストが最初に来ると、レスポンスが送信されます。これは簡単な方法です。また、qはアルファベット順にsの前です。

未定義のボディーウェルを取得した理由は、レスポンスがその時点ではまだ元気であるため、ボディーはundefined

です
関連する問題