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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions