【问题标题】:Why my nodejs POST request returns null values (I use postman)?为什么我的 nodejs POST 请求返回空值(我使用邮递员)?
【发布时间】:2021-05-08 22:19:10
【问题描述】:

当我使用 post 请求时,它只发布 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);
  } 
  
})

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

{ “书名”:“abc”, "book_author": "def", "book_desc": "gjl"

}

输出:

{ “book_id”:1, “书名”:空, “book_author”:空, “book_desc”:空 }

【问题讨论】:

  • 当你在res.json之前做console.log(newBook.rows[0]),会打印出什么?
  • 还是空
  • 可能是因为插入没有返回任何内容?表示没有插入任何行?
  • 输出是它返回的问题,我认为问题可能是给 req.body 多个值,但我仍然找不到解决方案

标签: node.js express postman


【解决方案1】:

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

在post code之前使用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)=>{
...
})

【讨论】:

  • 我在顶部写了解析器
  • 在插入到SQL之前能否确认req.body不为空
  • 我试图在 SQL 代码之前和之后得到它,没有任何改变,所以问题要么与 SQL 代码有关,要么与 req.body 方程有关
  • btw 在这两种情况下都是空的
  • 你如何在邮递员中发布数据?我上传了我的邮递员设置。你可以交叉检查你的。 drive.google.com/file/d/17HJFvxfH6tnAMeEJ4GapaBVy8sMBKxbI/…
猜你喜欢
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2019-11-23
  • 1970-01-01
  • 2016-05-12
  • 2021-10-24
相关资源
最近更新 更多