Выборка с базы (Nest.js + Sequelize(typescript))

Делаю выборку с базы (Nest.js + Sequelize(typescript)). Пример выборки:

async getAllStudents() {
const students = await this.studentRepository.findAll({
  include: [
    {
      model: Group,
      include: [{ model: Teacher, attributes: ['name', 'surname'] }],
    },
    {
      model: Visits,
    },
  ],
});
return students;}

Получаю выборку:

[
{
    "id": "here_id",
    "name": "Name",
    "surname": "Surname",
    "visits": [
        {
            "id": "here_id",
            "student_id": "here_id",
            "createdAt": "2021-12-12T16:47:16.690Z"
        },
        {
            "id": "here_id",
            "student_id": "here_id",
            "createdAt": "2021-12-15T20:41:45.690Z"
        }
    ]
},
{
    "id": "here_id",
    "name": "Name",
    "surname": "Surname",
    "visits": []
}]

Все работает отлично. Но нужно дописать запрос так, чтобы получать весь список студентов, но не весь список таблицы visits, а только если есть запись на текущую дату (без учета времени), если нет, то просто вернуть пустой массив "visits": []. Пробовал делать, при помощи where, но возврящает не весь список студентов, а только студента или студентов у которых текущая дата, остальные не выбирает.

Пример как должно быть, с неправильного примера выше.

[{
"id": "here_id",
"name": "Name",
"surname": "Surname",
"visits": [
    {
        "id": "here_id",
        "student_id": "here_id",
        "createdAt": "2021-12-15T20:41:45.690Z"
    }
]},
{
  "id": "here_id",
  "name": "Name",
  "surname": "Surname",
  "visits": []
}]

Пробую несколько дней решить, пока безуспешно.


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

Автор решения: eugene-dev

Решил свой вопрос таким образом:

{
      model: Visits,
      separate: true,
      where: {
        createdAt: {
          [Op.or]: [null, 'тут_текущая_дата'],
        },
      },
    },

я искал по полю createdAt если его нет, то просто возвращает пустой массив, насколько правильно не могу знать, но все работает как мне нужно и мою задачу решило.

→ Ссылка