私はRESTとExpressを使用するのが本当に新しいので、これをREST APIの tutorialに従っています。ここに私のapp.jsコードは次のとおりです。POSTメソッドを使用しているときNode.js req.bodyが空です
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require("mongoose");
var app = express();
var port = parseInt(process.env.PORT, 10) || 3000;
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
Genre = require('./models/genre');
//Connect to mongoose
mongoose.connect('mongodb://localhost/bookstore');
var db = mongoose.connection;
app.listen(port);
console.log('Running on port 3000\n\n');
app.post('/api/genres', function(req, res){
console.log(req.body);
var genre = req.body;
Genre.addGenre(genre, function(err, genre){
if (err) {
console.log(err);
res.send({status: 'something went wrong'});
}else{
res.send({status: 'saved'});
res.json(genre);}
});
});
私はPOSTリクエストを確認するためにFirefoxの上で休憩簡単を使用しています。本文が空であるため、生成されるエラーは「Genre Validation failed」です。このために使用されるスキーマは、モデルで定義されています
var mongoose = require("mongoose");
//Genre Schema
var genreSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
create_data:{
type: Date,
default: Date.now
}
});
var Genre = module.exports = mongoose.model('Genre', genreSchema);
// add genre
module.exports.addGenre = function(genre, callback){
Genre.create(genre, callback);
};
私は他のいくつかの人気のスレッドを試みたが、それはまだ問題を解決されていません。私は、モジュールをどのようにインポートするのかを並べ替えてみました。そして、 'application/x-www-form-urlencoded'を使ってフォームとしてデータを入力しました。何か案が?
編集:にconsole.log(req.body)の出力:。にconsole.log(REQ)の
{}
出力がjsfiddle.net上jbkb1yxaである(StackOverflowのは、文句を言わない私に埋め込むましょう私は、謝罪を低評判ポイントを持っているので、複数のリンク)簡単なRESTの スクリーンショット:。 http://imgur.com/6QmQqRV
console.log(req)とconsole.log(req.body)の結果を表示します。 POST要求を間違った形式で渡している可能性があります。リクエスト本文がJSONであることを確認してください。パラメータを渡す方法のイメージを追加することができます。 – rresol
POSTリクエストはどのように行われていますか? – jfriend00
これはおそらく、あなたがapiにPOST要求をしているのと同じことです。 – nozari