【问题标题】:NodeJs Perform Operation on Each returned MySql Result ObjectNodeJs 对每个返回的 MySql 结果对象执行操作
【发布时间】:2020-02-16 07:46:12
【问题描述】:

我正在使用 NodeJs 从 mysql 数据库中获取数据,从结果对象/数组中我想使用从 mysql 返回的数据执行特定操作(调用 Web 服务)。不幸的是,每当我遍历 mysql 结果并调用 Web 服务时,只有 mysql 结果集中的一个对象会针对 Web 服务调用。这是我的代码。

    app.get('/blt', function(req, res){

        var sql = "SELECT dest, amt FROM dit WHERE dest != 'DEST' && amt != 'AMT'";
        pool.getConnection(function(err, conn){
            if(err){
                console.log("MYSQL Connection Error: "+err);
            }
            else{
                conn.query(sql, function(err2, result){
                    if(err2){
                        console.log("Some error: "+err2);
                    }
                    else{
                        //console.log(JSON.stringify(result));
                        Object.keys(result).forEach(function(key) {
                            let result_ = result[key];      
                            let sn = Math.floor((Math.random() * 900000000) + 100000000);  
                            let dacc_ = result_.dest;
                            console.log(dacc_);




                                let blDetail = {
                                    "BalDto": {
                                        "Src": "XXXXXX",
                                        "Code": 1,
                                        "Amt": 10,
                                        "Dac": dacc_, //Variable from mysql resultset
                                        "Cmt": "Ok",
                                        "SN": sn
                                    }
                                };


                            soap.createClient(url, function(err, client) {
                                client.addSoapHeader(AuthHeader);
                                client.BalTransfer(blDetail, function(err, result) {
                                    if (err) {
                                        console.log(err.body); 
                                    } else {
                                        console.log("done");
                                    }
                                });
                            });  
                    }
                    );



                    }
                    conn.release(function(errs){
                        if(errs){
                            console.log(errs)
                        }
                    });
                });
            }
        });
});

我尝试使用异步,但仍然得到相同的结果,只有一个返回的 mysql 结果集被发送到 Web 服务。

我想把所有的结果集一一发送到webservice,请帮忙

【问题讨论】:

    标签: javascript mysql node.js asynchronous


    【解决方案1】:

    您实际上是在迭代来自 MySQL 的响应,这是一个列表,然后您对它们中的每一个进行肥皂调用。

    你需要做的是:

    1. 检查soap 客户端及其接受的内容。
    2. 查看它是否接受您的 BalDto 对象数组
    3. 利用 const listOfBalDtos = object.keys(result).map();进行转型
    4. 提出请求:

       soap.createClient(url, function(err, client) {
        client.addSoapHeader(AuthHeader);
        client.BalTransfer(listOfBalDtos);
       });
      

    试试这样的。

    【讨论】:

    • 可惜不支持数组
    猜你喜欢
    • 2011-09-30
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多