Javascript React/Node向MySQL数据库发送数据时出错
我的Node/React应用程序有一个复杂的问题。我有一个购物车,结账时的最后一个元素是向我的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')
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
端点吗?或者是产品
对象?我已经重新调整了创建产品功能的用途,以处理订单,我想这就是问题的根源。