我有一个脚本,该脚本读取CSV文件,将其转换为json,然后逐行读取以检查数据库中是否已有数据。到目前为止,我可以获取数据,但是我的问题是对我的数据库的调用。因为我想使用await来查询数据库,所以我将其包装在异步函数中。
const processFile = async (file) => {
var rowcount = 0
csv()
.fromFile(file)
.subscribe(json => {
return new Promise((resolve, reject) => {
console.log(rowcount++ + ' ' + recCount);
console.log('recProcessed', {rowcount, recCount})
var result = await db.checkFarmMaster(json.APN)
console.log(result.recordset[0].RecCount)
resolve();
})
.then(() => {
console.log(recCount)
})
.catch(err => {
console.log(err.message)
})
})}
但是会产生以下错误
var结果=等待db.checkFarmMaster(json.APN) SyntaxError:await仅在异步函数中有效
当我这样使用它时,效果很好
const test = async (p_APN) => {
var result = await db.checkFarmMaster(p_APN)
console.log(result.recordset[0].RecCount)
}
所以我认为这是因为它包含在承诺中。
答案 0 :(得分:2)
您不必在这里使用Promise
构造函数,只需返回async
函数
.subscribe(async json => {
console.log(rowcount++ + ' ' + recCount);
console.log('recProcessed', {rowcount, recCount})
var result = await db.checkFarmMaster(json.APN)
console.log(result.recordset[0].RecCount)
})