私はこの問題に数時間苦労していて、私はそれで立ち往生していると感じています。NodeJS、ExpressJS、MongoDBのチュートリアルをやっています。ExpressJSで簡単なAPIを構築しました。
JSON本文を含むcURLPOSTリクエストを発行すると、req.bodyが空になるため、エラーが表示されます。
ここにいくつかのソース/詳細:
cURLリクエスト:
curl -i http://localhost:3000/wines -X POST -H "Content-Type: application/json" -d "{'name': 'New Wine', 'year': '2009'}"
ルート:
app.post('/wines', wines.addWine);
APIメソッド:
exports.addWine = function (req, res) {
console.log('Req body' + req.body);
var wine = req.body;
console.log('Adding wine: ' + JSON.stringify(wine));
db.collection('wines', function (err, collection) {
collection.insert(wine, {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]);
}
});
});
}
次のエラーがスローされます。
Listening on port 3000...
Connected to 'winedb' database
Req bodyundefined
Adding wine: undefined
TypeError: Cannot read property '_id' of undefined
at insertAll (/home/ebsk/Documents/Dev/Node/nodecellar/node_modules/mongodb /lib/mongodb/collection.js:291:39)
at Collection.insert (/home/ebsk/Documents/Dev/Node/nodecellar/node_modules/mongodb /lib/mongodb/collection.js:92:3)
at exports.addWine (/home/ebsk/Documents/Dev/Node/nodecellar/routes/wines.js:56:20)
私はあなたからの聴取を楽しみにしています。提案を事前に感謝します。