我只是简单地尝试发布到我的MongoDb数据库(我是Node.js的新手),并且我能够使用静态数据发布到我的数据库,但由于某种原因,我无法尝试获取我的请求的主体。它总是空的。
const express = require('express');
const router = express.Router();
const db = require('../db');
var bodyParser = require('body-parser');
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
router.get('/', (req, res) => {
res.render('landing');
});
router.post("/addfan", (req, res) => {
var newFan = new db.Fans(req.body);
console.log(newFan);
newFan.save()
.then(item => {
res.send('saved');
})
.catch(err => {
res.status(400).send(err);
})
});
module.exports = router;
我的html页面(实际上是一个EJS文件,但不应该重要)有一个文本框,它连接到后表单的'/ addfan'动作。对不起新手问题,但是我正在使用一个身体解析器并且已经查看了其他所有内容并且无法让我的req.body变为非空。
所以我想出来了。我不知道我的HTML字段的名称必须与MongoDB中JSON的模式完全对应。
body-parser是应用程序级中间件。将“路由器”更改为“app”:
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())