【发布时间】:2021-03-31 04:50:16
【问题描述】:
我目前正在尝试学习 MERN Stack 网络开发。我遇到了一个不寻常的问题。 所以我正在尝试使用 Postmate 尝试将数据从正文输入到数据库。从 server.js 文件执行此操作时,它会起作用,但是当我尝试从其他文件执行此操作时,控制台将无法识别输入的数据
这是我的控制器文件(当我控制台记录 req.body 时它只是返回未定义)
import express from 'express';
import mongoose from 'mongoose';
import StudentsData from '../models/students.js';
const router = express.Router();
export const createStudent = async (req, res) => {
const { name } = req.body;
console.log(req.body);
const newStudentsData = new StudentsData({ name });
try {
await newStudentsData.save();
res.status(201).json( newStudentsData );
} catch (error) {
res.status(409).json({ message: error.message });
}
}
这是我的路线文件
import express from 'express';
import { createStudent, getStudents, deleteStudent, updateStudent } from '../controllers/students.js';
const router = express.Router();
router.post('/insertdata', createStudent);
export default router;
这是我的模型文件
import mongoose from 'mongoose';
const studentsSchema = mongoose.Schema({
name: String,
email: String,
roll_no: Number,
gender: String
});
const studentsData = mongoose.model('studentsData', studentsSchema);
export default studentsData;
这是我的 server.js 文件
import mongoose from 'mongoose';
import express from 'express';
import bodyParser from 'body-parser';
import router from './routes/students.js';
const app = express();
app.use('/students', router);
app.use(express.json());
app.use(bodyParser.json({ limit: "30mb", extended: true}));
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true}));
mongoose.connect("mongodb+srv://merntutor:merntutor123@cluster0.txjnr.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
})
.then(() => {
console.log("DB CONNECTED");
});
const PORT = 8000;
app.listen(PORT, () => {
console.log(`app is running at ${PORT}`);
});
在正文上,我输入了
{
"name": "test"
}
【问题讨论】:
-
似乎名称在
new StudentsData({ name });处有双括号? name 已经是req.body.name = {"name": "test"}的对象,但它有像{ {"name": "test"}}这样的对象括号 -
哦,是的。我的不好,我刚刚更正了,错误仍然出现
-
因为 app.use(bodyParser...) 没有在控制器文件中使用(应该解析哪个 json 对象)所以
req.body不是未定义的?
标签: javascript mongodb express mern body-parser