[英]node.js req.body returning undefined (solved)
編輯:@LawrenceCherone 解決了這個問題,它的 (req, res, next) 不是 (err, res, req)
我正在創建一個 MERN 應用程序(Mongo、express、react、node)。 我有一些工作正常並從 mongodb 返回數據的路線。 但是我創建了一個新的 controller 來訪問一個單獨的集合,每當我嘗試在其中創建一個新文檔時,我的 req.body 都會返回 undefined。
我已經像這樣設置了我的 server.js:
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const connectDB = require("./db");
const app = express();
const apiPort = 3000;
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());
app.use(bodyParser.json());
connectDB();
app.use("/api", require("./routes/router"));
var server = app.listen(apiPort, () => console.log(`Server running on port ${apiPort}`));
module.exports = server;
我的路由器是這樣的:
const express = require("express");
const QuizController = require("../controllers/quiz-controller");
const UserController = require("../controllers/user-controller");
const router = express.Router();
// quiz routes
router.post("/quizzes", QuizController.createQuestion);
router.get("/quizzes", QuizController.getAllQuestions);
router.get("/quizzes/:quiz_name", QuizController.getQuestionsByQuiz);
router.get("/quizzes/questions/:question_id", QuizController.getQuestionById);
router.put("/quizzes/:question_id/edit", QuizController.updateQuestionById);
router.delete("/quizzes/:question_id", QuizController.deleteQuestionById);
// user routes
router.post("/users", UserController.createUser);
module.exports = router;
所有的 /quizzes 路線都工作得很好,而且我在訪問身體方面沒有任何問題。 UserController.createUser 方法也幾乎與 Quizcontroller.createQuestion 相同,所以我很困惑。
這是帶有 createUser function 的用戶控制器:
const User = require("../models/User");
createUser = async (err, res, req) => {
const body = req.body;
console.log(req.body);
console.log(req.params);
console.log(body);
if (!body) {
return res.status(400).json({
succes: false,
error: "You must provide a body",
});
}
try {
const newUser = new User(body);
console.log(newUser);
if (!newUser) {
return res.status(400).json({ success: false, error: err });
}
const user = await newUser.save();
return res
.status(200)
.json({ success: true, newUser: user, msg: "New user created" });
} catch (err) {
console.error(err.message);
res.status(500).send("Server error");
}
};
module.exports = { createUser };
這是我用來嘗試測試的 postman 請求的圖像:[1]: https://i.stack.imgur.com/UHAK5.png
而用戶 model:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name: {
type: String,
required: true,
},
emailAddress: {
type: String,
required: true,
},
permission: {
type: String,
required: true,
},
auth0Id: {
type: String,
required: true,
},
});
module.exports = mongoose.model("users", UserSchema);
功能參數順序很重要。 它的
createUser = async (req, res, next) => // correct format
不是
createUser = async (err, res, req) // wrong format
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.