首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在节点js (交换请求)中出现了奇怪的问题。

在节点js (交换请求)中出现了奇怪的问题。
EN

Stack Overflow用户
提问于 2019-06-22 09:52:08
回答 2查看 148关注 0票数 0

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

在节约销售的同时出现了一个问题。

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

假设两个人同时存钱。第一人的销售身份是10,第二人的销售身份是11。

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

这一问题的可能原因是什么?

我的销售流程如下:

  1. 当用户保存销售时,它返回一个sales id
  2. 通过该sales id再次请求获取该销售的详细信息。

保存数据没有问题。

但当我拿到销售细节的时候就会搞砸了。

这里是销售路线:

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
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"
                    });
                }
            }
        });
    });
};
EN

回答 2

Stack Overflow用户

发布于 2019-06-25 04:27:00

几乎没有什么假设。但我不确定。试着在函数开始后和‘console.log()’之前写‘’。

检查请求参数和结果。注意-你真的用不同的参数处理2个请求吗?你真的收到了2个请求(也许有一个请求被处理,你有某种缓存)--你真的用不同的ids向DB发出请求吗?- DB真的返回相等/不平等的结果吗?

票数 1
EN

Stack Overflow用户

发布于 2019-07-24 13:55:52

我认为问题在于变量声明!

当我在没有‘var的json = {};中声明getSalesById时,它将被声明为全局变量。

这可能就是问题所在。我改变了var json = {};,到目前为止问题还没有发生。

谢谢,我很感激你的努力:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56714428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档