【问题标题】:no response in nodejs while using async/await使用 async/await 时 nodejs 没有响应
【发布时间】:2021-05-26 17:28:29
【问题描述】:

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

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中的代码

控制器代码:

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

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

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

【问题讨论】:

    标签: javascript node.js asynchronous async-await


    【解决方案1】:

    当您调用 xml2js 解析器时,问题出在您的函数 GetList 中。您正在将回调传递给解析函数,并从回调中返回一个值。从回调返回值与从外部函数调用返回值不同。解决方案是将函数调用包装成一个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));
                    });
                }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2018-09-14
      • 2017-10-26
      • 2021-06-15
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      相关资源
      最近更新 更多