【发布时间】:2021-06-18 00:45:11
【问题描述】:
我创建了一个 api,为此我正在使用 node.js。每当我发出发布请求时,即使在正确传递数据后,我也会收到一个验证错误,指出这些字段为空。我做了一个检查,我注意到 req.body 是未定义的,甚至安装并导入了 body-parser 我正在使用 body-parser: 1.19.0
//Index.js
const express = require("express");
const app = express();
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const bodyParser = require("body-parser");
//Import Router
const authRoute = require("./routes/auth");
dotenv.config();
//Import Router Middlewares
app.use("/api/user/", authRoute);
//MiddleWare
app.use(express.json());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
mongoose
.connect(process.env.DB_MONGO, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false,
})
.then(() => {
console.log("DB is connect");
})
.catch((err) => {
console.log(err);
});
app.listen(8081, () =>
console.log("Servier is running http://localhost:8081")
);
这是 auth.js
const router = require("express").Router();
const User = require("../model/User");
//post method
router.post("/register", async (req, res) => {
const user = new User(req.body);
console.log(req.body);
user.save((err, data) => {
if (err) {
console.log(err);
res.status(400).json({
message: err,
});
} else {
res.json({
message: data,
status: true,
});
}
});
});
【问题讨论】:
-
不要同时使用
app.use(express.json());和app.use(bodyParser.json());选择其中一个,最好是express版本,并且不再需要单独的body-parser模块,因为 Express 具有该功能现在内置。
标签: node.js