Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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/batch-file/6.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
Node.js NodeJS SQL Server数据拉取未等待承诺完成_Node.js_Sql Server_Es6 Promise - Fatal编程技术网

Node.js NodeJS SQL Server数据拉取未等待承诺完成

Node.js NodeJS SQL Server数据拉取未等待承诺完成,node.js,sql-server,es6-promise,Node.js,Sql Server,Es6 Promise,我正在使用Node重写一个ASPX应用程序。此应用程序的一部分是从SQLServer中的表中提取数据。我使用异步函数来尝试并强制在继续之前提取数据。在下一步之前,我必须掌握数据。但是,当它从wait返回时,响应为null const getUserGroups = async (user) => { let qry = `Select role from [xxxxx] where LOWER(yyyyy)='${user.toLowerCase()}'`; let gro

我正在使用Node重写一个ASPX应用程序。此应用程序的一部分是从SQLServer中的表中提取数据。我使用异步函数来尝试并强制在继续之前提取数据。在下一步之前,我必须掌握数据。但是,当它从wait返回时,响应为null

const getUserGroups = async (user) => {
    let qry = `Select role from [xxxxx] where LOWER(yyyyy)='${user.toLowerCase()}'`;
    let groups = await dataQuery.Select(qry, dbList.MCAIntranet)
    console.log("Groups: ", groups); //This is undefined
    return groups;
    // })
}
以下是选择功能:

const Select = async (query, database) => {
    // console.log(config[database]
    sql.connect(config[database], (err) => {
        if (err) console.log(err);
        let request = new sql.Request();
        request.query(query, (err, recordset) => {
            console.log(recordset)//displays correct data
            if (err) {
                console.log(err);
                return null
            }
            return recordset;
        })
    });
}
我正在使用mssql模块,但由于我对Node相当陌生,我不确定我的错误在哪里


提前感谢您查看此内容。

您可以使用Promise对象包装您的实现,也可以返回Promise.resolvedata;,并返回承诺。拒绝错误:


在当前代码中,不会从Select函数返回任何内容。特别是,您并不是在承诺中包装sql代码

您可以说,您正在使用mssql包。这已经支持,因此您应该使用适当的异步调用,而不是回调

const Select = async (query, database) => {
   try {
     await sql.connect(config[database]);
     let request =  new sql.Request();
     let recordset = await request.query(query);
     return recordset;
   } catch (e) {
     console.log(e);
     return null;
   }
}

此外,您应该阅读有关参数化查询的内容,因为当前您的代码非常不安全,即易受SQL注入和无效语法错误的影响。

不知道,但是您的查询很容易受到注入攻击和语法错误的影响,请使用此实例中不需要的参数化查询。未使用任何客户端数据。加上这里的查询是一个开始。我可以在它工作后进行重构。这非常有效。非常感谢。至于查询,就像我上面提到的,一旦我准备好重构,这些问题就会得到解决。这只是一个快速简单的选择查询,可以让事情正常进行。一旦我有了一个功能原型,我将参数化。
const Select = async (query, database) => {
   try {
     await sql.connect(config[database]);
     let request =  new sql.Request();
     let recordset = await request.query(query);
     return recordset;
   } catch (e) {
     console.log(e);
     return null;
   }
}