我使用节点js (express)和MySQL创建了一个web应用程序。这是一个ERP解决方案。
在节约销售的同时出现了一个问题。
当从两个不同的系统同时向服务器发送两个请求时,其中一个是得到正确的响应,另一个是接收与第一个类似的响应。
假设两个人同时存钱。第一人的销售身份是10,第二人的销售身份是11。
作为回应,第一个人得到的是10号发票,而第二个人得到的是10的发票细节,而他/她应该得到11号发票的详细信息。
这一问题的可能原因是什么?
我的销售流程如下:
保存数据没有问题。
但当我拿到销售细节的时候就会搞砸了。
这里是销售路线:
router.route('sales/:id')
.get(async function (req, res, next) {
let json = {};
let report = new ReportObj(req.conn);
let dbs_name = req.session.main_db;
try {
json = await report.getSalesById({
dbs_name,
ids: req.params.id
});
res.send(json);
} catch (e) {
next(e);
}
});,这是getSalesById函数:
this.getSalesById = function (sendData) {
// console.log(sendData);
return new Promise(function (resolve, reject) {
json = {};
var select_header_with_date_sql = `SELECT
...
FROM sales_entry_header seh
LEFT JOIN customers c ON c.id = seh.customer_id
LEFT JOIN form_type ft On ft.id = c.form_type
LEFT JOIN state_list s ON s.id = c.state
LEFT JOIN \`${sendData.dbs_name}\`.users u ON u.id = seh.user_sold
WHERE seh.id = ?`;
conn.query(select_header_with_date_sql, [sendData.ids], function (err, result) {
if (err) {
resolve({
status: 'error',
message: 'Error',
debug: err
});
} else {
if (result.length > 0) {
json = result[0];
var details_sql = `SELECT
...
FROM sales_entry_details sed
LEFT JOIN products p ON p.\`product-id\` = sed.product_id
LEFT JOIN hsn h ON h.id = p.hsn
LEFT JOIN unit_type u ON u.id = p.\`unit-type\`
LEFT JOIN purchase_entry_details ped ON ped.id = sed.batch_no
LEFT JOIN salesman sm ON sm.id = sed.salesman
WHERE sed.sales_entry_header_id = ?`;
conn.query(details_sql, [json.sales_id], function (err, details_result) {
if (err) {
resolve({
status: 'error',
message: 'Error',
debug: err
});
} else {
json.items = details_result.map(function (obj) {
obj.available_qty = obj.unit_purchase - obj.unit_sale + +obj.unit_sale_return - obj.unit_purchase_return + +obj.qty;
obj.return_available_qty = obj.unit_sale - obj.unit_sale_return;
return obj;
});
resolve(json);
}
});
} else {
resolve({
status: "error",
message: "No sales selected"
});
}
}
});
});
};发布于 2019-06-25 04:27:00
几乎没有什么假设。但我不确定。试着在函数开始后和‘console.log()’之前写‘’。
检查请求参数和结果。注意-你真的用不同的参数处理2个请求吗?你真的收到了2个请求(也许有一个请求被处理,你有某种缓存)--你真的用不同的ids向DB发出请求吗?- DB真的返回相等/不平等的结果吗?
发布于 2019-07-24 13:55:52
我认为问题在于变量声明!
当我在没有‘var的json = {};中声明getSalesById时,它将被声明为全局变量。
这可能就是问题所在。我改变了var json = {};,到目前为止问题还没有发生。
谢谢,我很感激你的努力:)
https://stackoverflow.com/questions/56714428
复制相似问题