TypeORM 는 방법을 확인하려면 쿼리가 실행이 완료?

0

질문

나는 건설 nestjs 응용 프로그램을 사용하는 typeorm 과 통신하는 postgresql.

내 테이블을 동적으로 생성되고,데이터를 삽입 또한 동적이다. 그 이유는 내가 사용하는 원 대신하여 쿼리 entities.

문제는 일부 테이블에서 데이터는 서로 관련되어 있으므로 나는 삽입할 수 없습 새로운 데이터전 삽입 쿼리가 완료되었습니다.

는지 확인하려면 어떻게 해야 하는 쿼리 실행이 있습니다. 여기에 예를 들어의 워크플로는 내가 사용합니다. 그것은 작은 데이터지만 실패하는 빅 데이터(10 000 000 항목과 이상)

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?

감사

nestjs node.js-typeorm postgresql sql
2021-11-23 15:59:14
1

최고의 응답

1

방법은 당신의 코드를 작성하고,트랜잭션이 발생한 후에 삽입을 완료합니다. 즉,그 시점에서 실행할 수도 있습의 새로운 쿼리가 있습니다. 당신은 반드시 필요로 하지 않는 콜백기 때문에 당신이 사용하는 비동기/여문입니다.

그러나,그것은 매우 큰 삽입,무언가 잘못 일(일종의 질의/연결 시간 제한 또는 서버 자원이 실패하). 디버깅을 시도/인쇄에 오류가 무엇을 보고 정말 일이 일어났습니다.

나는 당신을 제안하려에 삽입 여러 배치(의 무언가가 다음과 같 1k 기록,예를 들어).

2021-11-23 16:26:07

안녕하세요. 에 대한 감사에서 가리키는 트랜잭션이다. 실제로 그리고 실행할 수 있는 새로운 쿼리가 있습니다. 고 그렇습니다. 프로그램을 나눠서 사용할 데이터가 들어 있습니다. 후에는 몇 가지 테스트를 함께했 50k 당 항목 청크에 최적입니다. (일반적으로 수신되는 데이터는 것은 백만 명 이상)
Getsumi3

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................