TypeORM कैसे अगर जाँच करने के लिए क्वेरी निष्पादन समाप्त हो गया?

0

सवाल

मैं निर्माण कर रहा हूँ एक nestjs आवेदन का उपयोग करता है कि typeorm के साथ संवाद करने postgres.

मेरी मेज गतिशील बनाया जाता है, और डेटा डाला जाता है, यह भी गतिशील रूप से । यही कारण है कि मैं का उपयोग कच्चे क्वेरी के बजाय संस्थाओं.

समस्या यह है कि कुछ डेटा तालिकाओं से संबंधित हैं और मैं नहीं कर सकते हैं, नए डेटा सम्मिलित है, जब तक पिछला सम्मिलित क्वेरी समाप्त हो गया है.

कैसे मैं अगर जाँच क्वेरी निष्पादन समाप्त हो गया? यहाँ है एक उदाहरण के कार्यप्रवाह है कि मैं का उपयोग करें । यह काम करता है के साथ छोटे डेटा में विफल रहता है, लेकिन बड़ा डेटा के साथ (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

जिस तरह से अपने कोड लिखा है, लेन-देन के लिए प्रतिबद्ध केवल कुछ नहीं होगा के बाद सम्मिलित रहता है. जिसका मतलब है कि, उस बिंदु पर आप भी निष्पादित कर सकते हैं, अपनी नई क्वेरी. आप जरूरी नहीं की जरूरत है एक कॉलबैक कर रहे हैं क्योंकि आप का उपयोग async/इंतजार वाक्यविन्यास है.

हालांकि, यह लगता है कि बहुत बड़ी आवेषण के साथ, कुछ गलत हो रहा है (कुछ प्रकार की क्वेरी/कनेक्शन मध्यांतर, या सर्वर संसाधन विफल). कोशिश डिबगिंग/मुद्रण त्रुटि को देखने के लिए वास्तव में क्या हुआ.

मैं सुझाव है कि आप को विभाजित करने की कोशिश में सम्मिलित कई बैचों (कुछ की तरह 1k रिकॉर्ड, उदाहरण के लिए).

2021-11-23 16:26:07

हाय. इशारा करने के लिए धन्यवाद पर लेन-देन के लिए प्रतिबद्ध है । है कि वास्तव में की तरह लगता है एक अच्छी जगह है जहाँ मैं निष्पादित कर सकते हैं एक नई क्वेरी. और हाँ. मैं विभाजन में अपने डेटा की मात्रा. के बाद कुछ परीक्षण मैं के साथ समाप्त हो गया 50 प्रविष्टियों के प्रति हिस्सा होने के लिए इष्टतम है. (आमतौर पर आने वाले डेटा है एक लाख से अधिक)
Getsumi3

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में