异步功能未保存在数据库中

时间:2019-08-04 20:57:22

标签: reactjs mongodb asynchronous mongoose mern

该功能应该将购物车状态保存到我的数据库中。 好吧,我猜我应该打电话给Await Axios .post来将数据保存到数据库中,但是我不知道该怎么做,我已经搜索了一个小时    在客户端,后端的邮递员一切正常

  sendCart = async cart => {
        const config = {
          headers: {
            'Content-Type': 'application/json'
          }
        };

        try {
           const res = await axios.post('/api/purchase', cart, config)


        } catch (err) {
          console.error(err)
        }
      }

typeError: req.body.map is not a function
at router.post (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\routes\Purchase.js:7:24)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:9





MongoDb Connected
TypeError: req.body.map is not a function
at router.post (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\routes\Purchase.js:7:24)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:174:3)
at router (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:317:13)
at C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:275:10)
at jsonParser (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\body-parser\lib\types\json.js:119:7)
TypeError: req.body.map is not a function
at router.post (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\routes\Purchase.js:7:24)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:174:3)
at router (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:317:13)
at C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\express\lib\router\index.js:275:10)
at jsonParser (C:\Users\Test\Documents\GitHub\Ecommerce-Store\VBackend\node_modules\body-parser\lib\types\json.js:119:7)

这是我的路线

const express = require("express");
const models = require("../models/Cart");
const router = express.Router();

router.post("/", (req, res) => {
  const newPurchase = new models.cartModel({
    products: req.body.map(element => {
      const { colorC, sizeC, date, title, transactionID, count } = element;
      return { colorC, sizeC, date, title, transactionID, count };
    })
  });

  newPurchase
    .save()
    .then(purchase => res.json(purchase))
    .catch(err => {
      console.error(err.message);
      res.status(500).send("Server Error");
    });
});

module.exports = router;

1 个答案:

答案 0 :(得分:1)

嘿,所以我实际上并没有正确地通过该函数传递购物车数据,因此一切都正确无误。

sendCart = async cart => {
        const config = {
          headers: {
            'Content-Type': 'application/json'
          }
        }

        try {
          const res = await axios.post('/api/purchase',cart, config)
        } catch (err) {
          console.error(err)
        }
      }