Cannot destructure property 'vertices' of 'req.body' as it is undefined.
时间: 2024-02-07 10:01:56 浏览: 23
这个错误通常出现在使用解构赋值时,尝试从一个未定义或未传递的对象中获取值。在你的代码中,似乎你正在尝试从 `req.body` 对象中获取 `vertices` 属性,但是 `req.body` 对象并不存在或者没有 `vertices` 属性。你可以检查一下请求是否正确发送,并且确保请求体中包含了 `vertices` 属性。如果请求正确,但是仍然出现该错误,那么你可能需要检查一下代码中的变量名或属性名是否正确。
相关问题
const vertices = req.body.vertices;
这是一个使用 Node.js 编写的后端代码。这行代码的作用是从 HTTP 请求中获取一个名为 "vertices" 的属性,并将其值赋给一个名为 "vertices" 的变量。通常情况下,这个属性值是由前端通过 HTTP POST 请求发送给后端的。
在使用这个变量之前,你需要确保它已经被正确地初始化并包含所需的数据。你可以使用一些调试工具,如 console.log() 函数,来检查该变量的值。同时,你也需要对前端发送的数据进行验证,以确保它符合你的预期格式和内容。
怎样让req.body 对象存在vertices 属性
要让 `req.body` 对象存在 `vertices` 属性,需要在发送 POST 请求时,在请求体中包含 `vertices` 属性及其对应的值。在前端页面,可以使用 JavaScript 创建一个包含 `vertices` 属性的对象,然后将其转换为 JSON 字符串,作为请求体发送到服务器端。例如:
```
const vertices = [
[0, 0],
[0, 1],
[1, 1],
[1, 0]
];
const json_data = JSON.stringify({ vertices });
fetch('/upload_polygon', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: json_data
}).then(response => {
// 处理响应
});
```
在服务器端,需要使用相应的包解析请求体,将其转换为 JavaScript 对象。例如,使用 Express 框架,则可以通过 `body-parser` 中间件来解析请求体。安装 `body-parser` 后,可以在应用程序的入口文件中添加以下代码:
```
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
```
这样就可以在请求处理函数中访问 `req.body.vertices` 属性,例如:
```
app.post('/upload_polygon', (req, res) => {
const vertices = req.body.vertices;
// 处理上传的数据
});
```