簡體   English   中英

請求正文在 Post 中為空

[英]Request body is empty in Post

以下是參考我之前的問題編寫的測試文件: model.save() 返回無效的 output

// Imports
var express=require("express")
, mongoose=require("mongoose")
, bodyParser= require('body-parser')
, bodyParser = require("body-parser");
const { Int32 } = require("bson");


// Constants
const app = express()
const PORT=4002

// Create a model
const dataModel=mongoose.model('dataCollection',mongoose.Schema(data))




// Our Schema
var data={
    value: Number
}

// Making connection with database
mongoose.Promise= global.Promise;
mongoose.connect('mongodb://localhost/testdb', {
    useNewUrlParser:true,
    useUnifiedTopology:true
})


// Create the controller to save data
function postData(req,res){
    console.log(req.body)
    let newData = new dataModel(req.body)
    newData.save((err,resp)=>{
        if(err) console.log(err)
        else res.json(resp)
    })
}

// express set root page
app.get('/',(req,res)=> res.send("ROOT PAGE"));

// Set Route for our post request
app.route('/app')
.get((req,res)=>res.send("Nothing here"))
.post(postData);

// body-parser setup
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

// start listening on server
app.listen(PORT,()=>console.log(`Your application is running on Port: ${PORT}`));



上面的代碼為此處顯示的 POST 請求的 controller function postData中的console.log(req.body)打印 undefined : 在此處輸入圖像描述

您可以想象請求來自頂部並到達底部。

在您訪問路線后解析正文是沒有意義的。 您需要先解析正文,然后訪問路線。

// body-parser setup
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

// express set root page
app.get('/',(req,res)=> res.send("ROOT PAGE"));

// Set Route for our post request
app.route('/app')
.get((req,res)=>res.send("Nothing here"))
.post(postData);

但是 bodyparsers 不再使用。 您可以改用app.use(express.json())

暫無
暫無

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

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