Nestjs CsvReader未在异步/等待块中等待-已解决
我将csvReader与nestjs一起使用,并将“on”事件中的函数标记为async,将save to DB标记为wait “打开”事件似乎不会等待保存完成,并在处理文件后打印日志消息 代码如下所示:Nestjs CsvReader未在异步/等待块中等待-已解决,nestjs,csvreader,Nestjs,Csvreader,我将csvReader与nestjs一起使用,并将“on”事件中的函数标记为async,将save to DB标记为wait “打开”事件似乎不会等待保存完成,并在处理文件后打印日志消息 代码如下所示: const CsvReadableStream = require('csv-reader'); const Fs = require('fs'); const path = require('path'); @EntityRepository(UserTitle) export class U
const CsvReadableStream = require('csv-reader');
const Fs = require('fs');
const path = require('path');
@EntityRepository(UserTitle)
export class UserTitleRepository extends Repository<UserTitle> {
async seedUserTitle(): Promise<string> {
// load titles
const basePath = __dirname.replace('/dist', '');
const filePath = path.join(basePath, 'titles.csv');
let inputStream = Fs.createReadStream(filePath, 'utf8');
let numRecs = 0;
inputStream
.pipe(
new CsvReadableStream({
parseNumbers: true,
parseBooleans: true,
trim: true,
}),
)
.on('data', async function (row: SeedTitleDto) {
const seedTitle = new UserTitle();
seedTitle.shortName = row[0];
seedTitle.name = row[1];
seedTitle.seq = row[2];
try {
await seedTitle.save();
numRecs++;
console.log(`Save ${numRecs}`);
} catch (error) {
if (error.code === '23505') {
// duplicate username
throw new ConflictException(
`User Title ${seedTitle.shortName} already exists`,
);
return;
} else {
throw new InternalServerErrorException(error.message);
return;
}
}
})
.on('end', function async(row: SeedTitleDto) {
console.log(`End of file reached ${numRecs}`);
});
return `Created ${numRecs} titles`;
}
}
const CsvReadableStream=require('csv-reader');
常数Fs=要求('Fs');
const path=require('path');
@实体报告(用户名)
导出类UserTitleRepository扩展存储库{
异步seedUserTitle():承诺{
//加载标题
const basePath=uu dirname.replace('/dist','');
const filePath=path.join(basePath,'titles.csv');
让inputStream=Fs.createReadStream(文件路径“utf8”);
设numRecs=0;
输入流
.烟斗(
新CsvReadableStream({
对,,
是的,
特里姆:没错,
}),
)
.on('data',异步函数(行:SeedTitleDto){
const seedTitle=新的UserTitle();
seedTitle.shortName=行[0];
seedTitle.name=行[1];
seedTitle.seq=行[2];
试一试{
等待seedTitle.save();
numRecs++;
log(`Save${numRecs}`);
}捕获(错误){
如果(错误代码=='23505'){
//重复用户名
抛出新的冲突异常(
`用户标题${seedTitle.shortName}已存在`,
);
返回;
}否则{
抛出新的InternalServerErrorException(error.message);
返回;
}
}
})
.on('end',函数异步(行:SeedTitleDto){
log(`End of file reated${numRecs}`);
});
返回`Created${numRecs}titles`;
}
}
有人知道如何让这个包允许异步处理吗
非常感谢这可能会对您有所帮助。感谢这真的很有用,并为您提供了前进的道路