Как проверить пустой ли ответ запроса к mysql2?

Я использую mysql2/promise для получения выборки из базы данных. Если запрос дал результат и нашел записи в базе, то все хорошо, я получаю записи, но если запрос не дал результата, как это проверить? Казалось бы, все просто, будь это обычный массив, я бы просто проверил lenght и определил бы есть ли результат. Но как в данном случае понять, что ответ базы данных пустой? В моем случае if (tasks) всегда срабатывает, получил ли я записи из базы данных или же нет.

import {Result} from "../Result";
import {Errors} from "../Error";
import {userAuthorised} from "../userAuthorised";
import { Connection, RowDataPacket } from "mysql2/promise";

export const getTasks = async (result: Result, db: Connection, body: any) => {
    try {
        await userAuthorised(db, body)
        try {
            const [tasks] = await db.query(`select * from tasks where project_id = ${body.project_id} and parent_id ${body.task_id === undefined ?  'is null' : '= ' + body.task_id}`)
            if (tasks) result.tasks = tasks
            else result.error = Errors.tasksNotFound()
        } catch (error) {
            result.error = Errors.dbError()
        }
    } catch (error) {
        result.error = error
    }
}

Ответы (1 шт):

Автор решения: cheerful_weasel

Надо сначала проверить, что ответ является массивом, и уже тогда становится доступен параметр lenght

if (Array.isArray(tasks) && tasks.length > 0) result.tasks = tasks

Если же сразу написать так:

if (tasks.length > 0) result.tasks = tasks

Тогда будет ошибка.

Еще можно так

const tasks = res as RowDataPacket[]
if (tasks.length > 0) result.tasks = tasks
→ Ссылка