📜  req.body 空 mongodb - Javascript (1)

📅  最后修改于: 2023-12-03 14:47:04.059000             🧑  作者: Mango

MongoDB 中的 req.body 空值

如果在使用 Node.js 和 MongoDB 进行开发过程中,你可能会遇到一个问题,就是 req.body 在某些情况下会变成空值。本文将探讨这个问题的原因及解决方法。

原因

在 Node.js 中,使用 express 或者其他类似框架,可以处理 HTTP 请求。当用户在浏览器中发送请求时,请求会被传递到 Node.js 的服务器端。在服务器端,请求被 express 应用程序中间件处理。在处理请求时,如果请求包含 POST 数据,则这些数据会存储在 req.body 中。这个对象是一个哈希表,它包含所有提交 POST 数据的键值对。

当 req.body 空的时候,可能是以下原因导致:

  1. 没有在 express 中设置 body-parser 或使用 body-parser 时未按照正确的方式设置它。
  2. 使用的请求方法不正确,如使用 GET 而不是 POST 请求。
解决方法
安装和设置 body-parser

在 express 中,需要使用 body-parser 中间件来解析请求体。在 app.js 或者 server.js 文件中添加以下代码:

const express = require('express')
const bodyParser = require('body-parser')

const app = express()

// 使用 bodyParser
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

// 处理路由
// ...

检查请求方法

如果 req.body 为空,可能请求使用的方法不正确。例如,GET 请求没有请求体。 请确保在发送 POST 请求时使用正确的请求方法。

axios.post('/api/users', { id: 123, name: 'John Doe' })
  .then(res => console.log(res.data))
  .catch(err => console.log(err))
测试

可以使用 Postman 或其他工具测试请求是否能够成功解析 body。

结论

如果 req.body 为空,通常是因为未正确设置或不正确使用 body-parser 中间件。确保正确使用此中间件和使用正确的请求方法。