繁体   English   中英

使用 async/await 时 nodejs 没有响应

[英]no response in nodejs while using async/await

我正在尝试使用 nodejs 中的 async/await 将 xml 数据转换为 json 数据。我在 sqlmapper 代码中获取数据,但是当我尝试将其链接到 Z594C103F2C6E04C3D8AB059F0 时没有得到响应

sqlmapper 代码:

 const GetList = async function (Data) {
            try {
                let result = await db.pool.request()
                .input('id', db.sql.Int, Data.id)
                .input('user', db.sql.Int, Data.user)
                    .execute('usp_GetList')
                if (result.recordset) {
                    var resp = result.recordset[0];
                    let value = Object.values(resp)[0];
                    xml2js.parseString(value, { mergeAttrs: true }, (err, jsonresult) => {
                        var myJSON = JSON.stringify(jsonresult);
                        let value1 = myJSON.replace("\"", "");
                        console.log('myJSON', value1);
                        return utill.responseSuccessJSON(200, "success", myJSON);
                    });
                }
            } catch (error) {
                if (error) {
                    return utill.responseErrorJSON(401, "error", error)
                }
            }
        }

上面的代码是我放在sqlmapper.js中的代码

controller 代码:

const GetList = async(request, response) => {
    let Data = request.body;
    let result =await sqlmapper.GetGroupUserList(Data);
    return response.json(result);
}

上面的代码是我在 controller 中使用的代码,我得到的结果是未定义的

please help me to get json data which is converted from xml in response

当您调用xml2js解析器时,问题出在您的 function GetList中。 您将回调传递给解析 function,并从回调中返回一个值。 从回调返回值与从外部 function 调用返回值不同。 解决方案是将 function 调用包装到 promise 并返回 promise。

 return new Promise( (resolve, reject) => {
           xml2js.parseString(value, { mergeAttrs: true }, (err, jsonresult) => {
                    if (err) {
                       return reject(err);
                    }
                    var myJSON = JSON.stringify(jsonresult);
                    let value1 = myJSON.replace("\"", "");
                    console.log('myJSON', value1);
                    resolve(utill.responseSuccessJSON(200, "success", myJSON));
                });
            }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM