首页 > 解决方案 > 无法解构属性,因为它是未定义的

问题描述

我正在为 mssql 数据库使用 sequelize。这是订单的模型:

import Sequelize from "sequelize";
import { db } from "../config/database.js";

const Orders = db.define(
  "order",
  {
    customerName: {
      type: Sequelize.STRING,
    },
    customerAddress: {
      type: Sequelize.STRING,
    },
    phoneNumber: {
      type: Sequelize.STRING,
    },
    email: {
      type: Sequelize.STRING,
    },
  },
  {
    timestamps: false,
  }
);

export { Orders };

我有如下写的http帖子:

router.post("/orders", async (req, res) => {
  const { customerName, customerAddress, phoneNumber, email } = req.body;
  const order = await Orders.create({
    customerName,
    customerAddress,
    phoneNumber,
    email,
  });
  res.json(order);
}); 

但是,当我尝试从 Postman 或我的前端发帖时,我收到以下消息:

 const { customerName, customerAddress, phoneNumber, email } = req.body;
          ^

TypeError: Cannot destructure property 'customerName' of 'req.body' as it is undefined.

这是我的前端:

function submit(e) {
    console.log(order);
    e.preventDefault();
    axios
      .post("http://localhost:3002/parts/orders", {
        customerName: order.customerName,
        customerAddress: order.customerAddress,
        phoneNumber: order.phoneNumber,
        email: order.email,
      })
      .then((res) => {
        console.log(res.data);
      });
  }

此函数由提交的表单使用。它将数据发送到 /parts/orders 因为我更改了路由。我有 console.log(order) 所以我可以看到它确实是一个带有数据的订单。这就是我在控制台中得到的,所以我想订单中有数据,req.body 也应该如此。 {customerName: "testman", customerAddress: "test street", phoneNumber: "testnumber", email: "test@gmail.com"}

那么为什么我的数据库没有得到它应该得到的数据呢?

标签: javascriptreactjshttpsequelize.js

解决方案


app.user(express.json()) 我的 index.js 文件中没有


推荐阅读