2016-09-20 3 views
0

У меня есть несколько методов post в узле. Один из них работает, теперь я работаю над другим. Я попытался переключить порядок пар ключ-значение в res.body, перезапустив мой серверный сервер и несколько других вещей, и теперь у меня нет идей. Я использую почтальон, поэтому, возможно, проблема с этим, но, возможно, вы, ребята, увидите явную ошибку, которой я не занимаюсь.Почтовый метод в узле отображает ошибку 500

Вот модель:

var UserGameSchema = new mongoose.Schema({ 
user: { type: String, required: true }, 
game: { type: String, required: true }, 
own: { type: Boolean, required: true } 
}); 

var UserGame = mongoose.model('UserGame', UserGameSchema); 

module.exports.UserGame = UserGame; 

вот мой метод:

app.post('/mygames', function(req, res) { 
UserGame.create({ 
    user: req.body.user, 
    game: req.body.game, 
    own: req.body.own 
}, function(err, item) { 
    if (err) { 
     return res.status(500).json({ 
      message: 'Internal Server Error' 
     }); 
    } 
    res.status(201).json(item); 


    }); 
}); 

и вот res.body Я посылаю с помощью Почтальон

{ 
"user": "Colin", 
"own": true, 
"game": "Grand Theft Auto 5 (PS4)" 
} 

Да, я довольно конечно, я использую правильный URL: http://localhost:8080/mygames

все еще получающ эту ошибку 500. В частности Почтальон возвращается в консоли:

TypeError: Cannot read property 'user' of undefined

Я не уверен, почему пользователь должен быть определен.

Благодарим за любую отзыв.

Если ищете способ слишком много информации, вот GitHub репо для этого: https://github.com/auldsy-ababua/gameswap

+0

Вы используете [ 'тело-parser'] (https://www.npmjs.com/package/body-parser)? – robertklep

+0

Я использую body-parser –

+0

Поскольку 'req.body', кажется, не определен, возможно, вы не используете его правильно. Например, он должен быть объявлен перед вашими маршрутами. Кроме того, вам нужно убедиться, что он настроен для анализа данных JSON (потому что это то, что вы отправляете на него). – robertklep

ответ

0

Вы используете только body-parser для one specific route:

app.post('/users', jsonParser, function(req, res) { ... }); 

Так что это не используется для POST /mygames маршрут. Либо добавить его туда же, или добавить его в глобальном масштабе:

app.use(jsonParser); 

...your routes... 
+0

спасибо! Починил это. Действительно ценю это. –

Смежные вопросы