ฉันกำลังสร้าง nestjs องโปรแกรมที่ใช้ typeorm ต้องติดต่อกับ postgres.
ของตารางข้อมูลเรียบร้อยแล้วนี่สร้าง dynamically และข้อมูลเป็นการแทรกด้ว dynamically. นั่นคือทำไมฉันถึงใช้ดิบกับการค้นหาแทนที่จะเป็น entities.
ปัญหาคือมันมีข้อมูลบางอย่างอยู่ในตารางข้อมูลเรียบร้อยแล้วเกี่ยวข้องกันและฉันไม่สามารถแทรกข้อมูลใหม่เว้นแต่ว่าก่อนหน้าแทรกค้นได้เสร็จสิ้นแล้ว
ยังไงฉันตรวจสอบว่าสืบค้นประหารเสร็จแล้ว? นี่คือเป็นตัวอย่างของ workflow ว่าฉันประโยชน์หรอก มันได้ผลกับน้องข้อมูลแต่ล้มเหลวกับข้อมูลใหญ่(10000000 รายการและมากกว่าเดิม)
export class Test {
constructor(
private readonly connection: Connection;
) {}
public async insertData(table1, table2, arr1, arr2) {
await insertInto(table1, arr1);
//I want second insertInto() to be executed after I get confirmation from database that insertInto() from above is finished
await insertInto(table2, arr2);
}
private async insertInto(table, data) {
const queryRunner = this.connection.createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();
const preparedData = [];
//prepare data to be inserted as raw query
//...
try {
await queryRunner.query(`INSERT IGNORE INTO "${table}" VALUES ${preparedData}`);
await queryRunner.commitTransaction();
} catch (e) {
await queryRunner.rollbackTransaction();
throw new InternalServerErrorException(e, Error while executing custom query. Rollback transaction.)
} finally {
await queryRunner.release();
}
}
}
ที่ต้องการผลลัพธ์คือต้องมีบางอย่าเรียกกลับสำหรับ queryRunner.query
เหมือนนี้ queryRunner.query('raw_sql', (err, res) => {})
มันเป็นไปได้กับ typeorm?
ขอบคุณ