簡體   English   中英

req.body 中的未定義值

[英]Undefined values in req.body

當我想使用 Postman 進行 POST req 時,我已經將 content-type 設置為 application/json 並且我 console.log req.body.name 或者其他它只返回undefined 這是代碼:
index.js

const app = express();
const mongoose = require("mongoose");
const dotenv = require("dotenv");

const authRoute = require("./routes/auth");

dotenv.config();

mongoose.connect(
  process.env.DB_CONNECT,
  { useNewUrlParser: true, useUnifiedTopology: true },
  () => console.log("connected to mongoDB")
);

// Middleware
app.use(express.json());

// Routes
app.use("/api/user", authRoute);

// Run Server
const PORT = 5000;
app.listen(PORT, () => console.log(`server running on port ${PORT}`));

auth.js

const router = require("express").Router();
const User = require("../model/User");

router.post("/register", async (req, res) => {
  const user = new User({
    name: req.body.name,
    email: req.body.email,
    password: req.body.password,
  });
  console.log(req.body.name);
});

module.exports = router;

由於您沒有使用正文解析器並且僅使用express.json()將請求作為原始發送,因此請選擇JSON 您應該編寫的格式如下所示:

{ "name": "Some name", "lastname": "...." }

這是您的 postman 的外觀:

在此處輸入圖像描述

將正文解析器安裝為:

npm install --save body-parser

然后將您的 index.js 文件更新為:

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 

只需在 // 中間件之后添加這些行

app.use(express.json());

例如 // 中間件

app.use(express.json());
app.use(express.urlencoded{extended: true})

此快速設置將允許您解析 html-body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM