types / mysql2

Typings for https://github.com/sidorares/node-mysql2
ISC License
41 stars 23 forks source link

Cannot properly type results for query with `rowsAsArray` option set to true #55

Open teklakct opened 1 year ago

teklakct commented 1 year ago

Hi

I don't know what I'm doing wrong. I cannot properly type results when the option rowsAsArray is enabled. My SQL returns an array of arrays that contains only one string eg:

// connection.promise().query("SHOW TABLES LIKE 'table_%';");
[
  [ 'table_1'],   [ 'table_2'],
  [ 'table_3'],   [ 'table_4'], 
]

I want to flat this result in my helper function but TS complaints about types mismatch. See example below

const listTablesSql = "SHOW TABLES LIKE 'table_%';"

async strictTypeInQuery(): Promise<string[]> {
        // error: `Type 'string' is not assignable to type 'RowDataPacket'`
        const [rows] = await connection.promise().query<string[]>({sql: listTablesSql, rowsAsArray: true}); 

        return rows.flat(1);
}

async inferType(): Promise<string[]> {
        // error: `Type 'string' is not assignable to type 'RowDataPacket'`
        const [rows] = await connection.promise().query({sql: listTablesSql, rowsAsArray: true}); 

        return rows.flat(1); // TS:error `Type 'RowDataPacket' is not assignable to type 'string'.`
}

Can you help me and point what I'm doing wrong?