Skip to content

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

@teklakct

Description

@teklakct

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions