gpt4 book ai didi

mysql - Node js 中出现奇怪的问题(交换请求)

转载 作者:行者123 更新时间:2023-11-29 09:40:41 25 4
gpt4 key购买 nike

我使用 Node js (express) 和 MySQL 创建了一个 Web 应用程序。这是一个 ERP 解决方案。

保存销售额时出现问题。

当 2 个请求同时从 2 个不同的系统发送到服务器时,其中一个收到正确的响应,另一个收到与第一个系统类似的响应。

假设有 2 个人同时存钱。第一个人的销售 ID 是 10,第二个人的销售 ID 是 11。

作为回应,第一个人得到的是发票 10 的发票,但第二个人得到的发票详细信息是 10,而他/她应该得到的发票详细信息是 11。

此问题的可能原因是什么?

我的销售流程如下:

  1. 当用户保存销售时,它会返回销售 ID
  2. 通过该销售 ID,再次发出请求以获取该销售的详细信息。

保存数据没有问题。

但是当我获取销售详细信息时,情况就变得困惑了。

这是销售路线:

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"
});
}
}
});
});
};

最佳答案

几乎没有假设。但我不确定。尝试在函数开始之后和“resolve()”之前写入“console.log”。

检查请求参数和结果。请注意- 你真的处理两个具有不同参数的请求吗- 你真的收到 2 个请求吗(也许处理了 1 个请求并且你有某种缓存)- 你真的用不同的 ID 向数据库发出请求吗?- DB 是否真的返回相等/不相等的结果

关于mysql - Node js 中出现奇怪的问题(交换请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56714428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com