我是mongoDB和mongoose的新手。我正在努力写下我的第一个api。这是我的架构的样子:
var movementSchema = new mongoose.Schema({
name: String,
difficulty: String,
joints: Array
});
以下是我的帖子请求:
.post(function(req, res) {
var movement = new Movement({
name: req.body.name,
difficulty: req.body.difficulty,
joints: req.body.joints
});
// save the movement and check for errors
movement.save(function(err) {
if (err) res.send(err);
res.json({ message: 'Movement created!' });
});
})
然而,看起来我的请求对象是空的,并且从GET上的服务器返回的内容如下所示:
{
"_id": "56f963f699d121ec35bbe91f",
"__v": 0,
"joints": []
}
我无法弄清楚我做错了什么。非常感谢所有帮助。
答案 0 :(得分:2)
您的Movement
集合中的其他记录似乎与您在Mongoose中定义的架构不匹配。您要么从集合中删除那些与模式不匹配的记录,要么将模式更改为不严格。
Schema Option Strict
strict选项(默认情况下启用)确保传递给我们的模型构造函数的未在我们的模式中指定的值不会保存到db。
var movementSchema = new mongoose.Schema({
name: String,
difficulty: String,
joints: Array
}, { strict: false} );
在Express中获取空请求正文时,需要注意两件事。
bodyParser.json()
已在Express中注册,因此正确解析了req.body
对JSON请求的解析。Content-Type
标题设置为application/json
答案 1 :(得分:0)
如果 require.body 为空,请确保使用body-parser。应该在路由之前使用它。
app.use(bodyParser.json())
body-parser,然后使用路由。
app.use('/api',api);