2016-02-19 4 views
1

Мне нужен API для андроид для вставки данных в MongoDB, я следую this, ноNode.js Вставка данных MongoDB Web API, bodyParser выпуск

var song = req.body; TypeError: Cannot read property 'body' of undefined 

Я Google несколько ответ, который нужно установить bodyParser, поэтому я следую this установить bodyParser, но все-таки получить

var song = req.body; TypeError: Cannot read property 'body' of undefined 

Я не уверен, где я не прав, пожалуйста, помогите

приложение код

var express = require('express'), 
songs = require('./routes/route'); 
var app = express(); 

var bodyParser = require('body-parser'); 
var jsonParser = bodyParser.json(); 


app.post('/songs', jsonParser, function (req, res) { 
if (!req.body) return res.sendStatus(400); 
// create user in req.body 
}); 

app.get('/', function (req, res) { 
res.send('Hello World!'); 
}); 

app.listen(3000, function() { 
console.log('Example app listening on port 3000!'); 
}); 

    app.get('/songs',songs.addSong); 

маршрут хлев

var mongoose = require('mongoose'); 
var mongo = require('mongodb'); 
var uri = "mongodb://XXXXXX:[email protected]:61365/aweitest"; 
mongoose.connect(uri); 
// we're connected! 
var db = mongoose.connection.db; 
var BSON = require('bson').BSONPure; 
var body = require('body-parser'); 


db.on('error', console.error.bind(console, 'connection errrrrrrrror:')); 
//db = mongoose.connection.db; 
db.once('open', function() { 
console.log("mongodb is connected!!"); 
}); 



exports.addSong = function(req, res) { 
var song = req.body; 
console.log('Adding song: ' + JSON.stringify(song)); 
db.collection('songs', function(err, collection) { 
collection.insert(song, {safe:true}, function(err, result) { 
    if (err) { 
    res.send({'error':'An error has occurred'}); 
    } else { 
    console.log('Success: ' + JSON.stringify(result[0])); 
    res.send(result[0]); 
    } 
}); 
}); 
} 
+0

В вашем коде приложения: 'var express = require ('express'); var bodyParser = require ('body-parser'); var app = express(); app.use (bodyParser()); ' Укажите модули ** В этом конкретном порядке **. А потом посмотрите, работает ли он. Вы фактически не использовали bodyParser в своем приложении. Чтобы использовать его, вы должны указать 'app.use (bodyParser());' Посмотрите, поможет ли это и дайте мне знать –

+0

@SiddharthAjmera Спасибо! Я делаю то, что вы говорите, у него нет ошибки только в этом 'Fri, 19 Feb 2016 16:09:19 GMT body-parser устарел bodyParser: используйте отдельные json/urlencoded middlewares на app.js: 5: 9 Пт, 19 фев 2016 16:09:19 GMT body-parser устарел неопределенный расширенный: предоставить расширенный вариант в .. \ .. \ node_modules \ body-parser \ index.js: 105: 29 Im, используя Curl для проверки этого api, curl дайте мне немного 't решить проблему, пытаясь понять это –

+0

@SiddharthAjmera - это то, что, возможно, поможет мне использовать завиток, чтобы проверить, что мой api работает сейчас или сейчас? –

ответ

0

Вы не используете jsonParser в вашем GET /songs маршрут, только ваш POST /songs маршрут. Однако в запросах GET обычно нет тел запроса. Значения, как правило, передаются в URL как параметры запроса в этих случаях, поэтому вы, вероятно, захотите вместо этого посмотреть в req.query.

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