我真的很习惯使用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);}
});
});
我使用Firefox的休息便于检查POST请求。正在生成的错误是“体裁验证失败”,因为身体是空的。用于此的架构模型中定义为:
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