Javascript React/Node向MySQL数据库发送数据时出错

Javascript React/Node向MySQL数据库发送数据时出错,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我的Node/React应用程序有一个复杂的问题。我有一个购物车,结账时的最后一个元素是向我的MySQL数据库添加订单详细信息,但是我的函数从控制器返回一个错误。我张贴的相关代码,完整的代码是太广泛的职位 这是节点路由: module.exports = function(app) { var controller = require('../controllers/controller'); // controller Routes app.route('/products')

我的Node/React应用程序有一个复杂的问题。我有一个购物车,结账时的最后一个元素是向我的MySQL数据库添加订单详细信息,但是我的函数从控制器返回一个错误。我张贴的相关代码,完整的代码是太广泛的职位

这是节点路由:

module.exports = function(app) {
  var controller = require('../controllers/controller');

  // controller Routes
  app.route('/products')
    .get(controller.list_all_products)
    .post(controller.create_a_product);
    app.route('/products/:product_type')
    .get(controller.products_by_type);
   app.route('/product/:productId')
    .get(controller.read_a_product)
    .put(controller.update_a_product)
    .delete(controller.delete_a_product);
};
这是控制器的相关部分:

exports.create_a_product = function(req, res) {
  var new_product = new Product(req.body);

  //handles null error 
   if(!new_product.product || !new_product.status){
        res.status(400).send({ error:true, message: 'Please provide product/status' });
    } else {
  Product.createProduct(new_product, function(err, product) {
    
    if (err)
      res.send(err);
    res.json(product);
  });
}
};
模型的相关部分:

var Product = function(product){
    this.product = product.product;
    this.status = Product.status;
    this.created_at = new Date();
};
Product.createProduct = function (newProduct, result) {    
    sql.query("INSERT INTO orders set ?", newProduct, function (err, res) {
        if(err) {
            console.log("error: ", err);
            result(err, null);
        }
        else{
            console.log(res.insertId);
            result(null, res.insertId);
        }
    });           
};
然后,React端使用此api调用:

import $ from 'jquery'

export const addOrder = order => {
    const urlString = "http://localhost:9000/products"
    return $.ajax({
        url: urlString,
        method: "POST",
        data: order,
        success: () => {
            console.log('order logged')
        },
        error: (status, err) => {
            console.log(status)
        }
    })
  }
最后我用这个变量打电话:

 var r = await addOrder(this.state.order).then(res => res.json())
订单详细信息是一个简单的对象:

this.state = {
            order: {
                oid: '',
                order_date: '',
                products: '',
                first_name: '',
                last_name: '',
                email: '',
                address: '',
                city: '',
                province: '',
                zip: '',
                country: ''
            }
        }
执行时,我从控制器收到错误“请提供产品/状态”


我知道这很困难,非常感谢您的帮助。

在我看来,您将订单对象发送到产品服务,其中可能包含多个产品。您应该从order对象(req.body)中提取产品,并以循环方式将其发送到createProduct方法。

您发送到
产品
端点的
订单
对象既没有
状态
也没有
产品
属性。这就是错误。您真的应该向
产品
端点发送
订单
对象吗?这不是一个
orders
端点吗?或者是
产品
对象?我已经重新调整了创建产品功能的用途,以处理订单,我想这就是问题的根源。