Node.js NodeJS SQL Server数据拉取未等待承诺完成
我正在使用Node重写一个ASPX应用程序。此应用程序的一部分是从SQLServer中的表中提取数据。我使用异步函数来尝试并强制在继续之前提取数据。在下一步之前,我必须掌握数据。但是,当它从wait返回时,响应为nullNode.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
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;
}
}