为什么我的 nodejs POST 请求返回空值(我使用邮递员)?

时间:2021-05-08 13:22:40

标签: node.js express postman

当我使用 post request 时,它只发布 null 我使用 postman

app.post("/books",async (req,res)=>{
  try{
      
  const {book_name,book_author,book_desc} = req.body;
  const newBook =  await pool.query("INSERT INTO library(book_name,book_author,book_desc) VALUES($1,$2,$3) RETURNING *",
  [book_name,book_author,book_desc]);
  res.json(newBook.rows[0]);
   }
  catch(err){
      console.error(err.message);
  } 
  
})

这是邮递员的代码和输出:

{ "book_name": "abc", "book_author": "def", "book_desc": "gjl"

}

输出:

{ "book_id": 1, “书名”:空, “书作者”:空, “book_desc”:空 }

1 个答案:

答案 0 :(得分:1)

您缺少 json 解析器,因此您的 req.body 没有获得 book_name、book_author 和 book_desc。

在邮政编码前使用 json() 中间件,您就可以开始了。

对于 TS:

import express, { json } from "express";
app.use(json()) // use json parser to convert the body to json for upcoming method to consume

app.post("/books",async (req, res)=>{
...
})

对于JS:

const express = require('express');
app.use(express.json())

app.post("/books",async (req, res)=>{
...
})