node.js / 表示,请求体为空

node.js / express, request body is null

正在学习 express,出于某种原因,我的请求正文对于两个参数都是 NULL

我 index.js 的完整文件:

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 3000
const db = require('./queries')

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

app.get('/',(request, response) => {
    response.json({info: 'express and postgresapi'})
})

app.post('/users', db.createUser)

app.listen(port, () => {
    console.log(`App running on port ${port}.`)
  })

和我正在制作 POST

的查询文件
const Pool = require('pg').Pool
const pool = new Pool({
  user: 'postgres',
  host: 'localhost',
  database: 'chatDb',
  password: 'password1',
  port: 5432,
})

  const createUser = (request, response) => {
    const { name, email } = request.body

console.log(request.query);

pool.query('INSERT INTO users (name, email) VALUES (, )', [name, email], (error, results) => {
  if (error) {
      console.log(request.body)
    throw error
  }
  response.status(201).send(`User added with ID: ${results.insertId}`)
})

}

所以这实际上 post,但是当我查看我的数据库中的行时,它们就像

ID      name    email
20      NULL    NULL

我的卷曲是 curl --data "name=Elaine&email=elaine@example.com" http://localhost:3000/用户

另外,console.log(request.query)的结果;是{}

嘿,如果你使用邮递员,你需要传递一个对象

{
 "name":"your name here",
 "email":"email that you want"
}

希望对您有所帮助

  1. 如果您将请求参数作为参数发送,则使用 -
const createUser = (request, response) => {
    const { name, email } = request.query;

pool.query('INSERT INTO users (name, email) VALUES (, )', [name, email], (error, results) => {
  if (error) {
      console.log(request.body)
    throw error
  }
  response.status(201).send(`User added with ID: ${results.insertId}`)
})
  1. 如果您在正文中发送请求参数,请使用 -
const createUser = (request, response) => {
    const { name, email } = request.body;

pool.query('INSERT INTO users (name, email) VALUES (, )', [name, email], (error, results) => {
  if (error) {
      console.log(request.body)
    throw error
  }
  response.status(201).send(`User added with ID: ${results.insertId}`)
})

** 你可以打开你的邮递员,你会得到两个选项 Params 和 Body Options。如果您 select Body 然后使用 urlencode 或 json 格式发送请求正文,因为您添加了 body-parser -

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