Javascript 节点Js等待在异步函数内不工作
我试图用async/await从数据库中获取一些数据,然后用一些数据创建一个对象并插入到数据库中。我需要为此同步调用,以便发送完整的插入数据。Javascript 节点Js等待在异步函数内不工作,javascript,node.js,sql-server,async-await,Javascript,Node.js,Sql Server,Async Await,我试图用async/await从数据库中获取一些数据,然后用一些数据创建一个对象并插入到数据库中。我需要为此同步调用,以便发送完整的插入数据。 我有一个异步函数,但等待不起作用 代码如下: async function queryDb(roleName) { let pool = await sql.connect(dbConfig); let data = await pool.request() .query(`select id from table whe
我有一个异步函数,但等待不起作用 代码如下:
async function queryDb(roleName) {
let pool = await sql.connect(dbConfig);
let data = await pool.request()
.query(`select id from table where name='${roleName}'`);
roleId = data.recordset[0].id;
pool.close;
sql.close;
return roleId;
}
queryDb(roleId)
.then(result => {
console.log(result);
})
.catch(err => {
pool.close;
sql.close;
console.log(err)
})
async function program() {
const xlsxFile = require('read-excel-file/node');
xlsxFile('./file.xlsx').then((rows) => {
let roleid = await queryDb(rows[0][1]); // here is not working
let insretObj = {
field1: rows[0][0],
field2: rows[1][1],
field3: rows[2][2],
field4: rows[3][3],
field5: rows[4][4],
field6: rows[5][5],
role_id: roleid,
};
assignRoles(insretObj);
});
};
program().then(console.log('hereeeeeee'));
我真的很感激你的回答
它显示此错误“等待仅在异步函数中有效”。我只想在这里获得roleId,并使用该角色id创建下面的对象
您对wait
的使用在嵌套的.then()
处理程序回调中,该回调本身不是async
通常,您不希望在同一控制流中混合使用.then()
和wait
。我建议您将其更改为:
const xlsxFile = require('read-excel-file/node');
async function program() {
let rows = await xlsxFile('./file.xlsx');
let roleid = await queryDb(rows[0][1]);
let insretObj = {
field1: rows[0][0],
field2: rows[1][1],
field3: rows[2][2],
field4: rows[3][3],
field5: rows[4][4],
field6: rows[5][5],
role_id: roleid,
};
assignRoles(insretObj);
}
您使用什么库进行sql访问?它支持承诺吗?还有,
pool.close
和sql.close
的意义是什么?这些应该是函数调用,您实际上是在pool.close()
和sql.close()
中调用的吗?@jfriend00我正在使用mssql。关于另一个,是的,我想它们是一样的,它们不一样。像pool.close
这样的语句不起任何作用。@jfriend00这与我的问题有关吗?等待在程序功能内部不起作用