Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用async/await时NodeJ中没有响应_Javascript_Node.js_Asynchronous_Async Await - Fatal编程技术网

Javascript 使用async/await时NodeJ中没有响应

Javascript 使用async/await时NodeJ中没有响应,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,我正在尝试使用nodejs中的async/await将xml数据转换为json数据。。 我在sqlmapper代码中获取数据,但当我尝试将其链接到控制器代码时,没有得到响应 sqlmapper代码: const GetList = async function (Data) { try { let result = await db.pool.request() .input('id', db.sql.In

我正在尝试使用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)
                }
            }
        }
const GetList = async(request, response) => {
    let Data = request.body;
    let result =await sqlmapper.GetGroupUserList(Data);
    return response.json(result);
}
上面的代码是我放在sqlmapper.js中的代码

控制器代码:

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

调用
xml2js
解析器时,问题出在函数
GetList
中。您将回调传递给parse函数,并从回调返回一个值。从回调返回的值与从外部函数调用返回的值不同。解决方案是将函数调用包装成承诺并返回承诺

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