Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
5.16. Добавит новое поле
offerCount
для каждой категории.
У нас есть список объявлений, которые относятся к определённой категории. В принципе, на этом можно и закончить. Необходимую информацию (количество) можно получить обратившись к свойству `length` массива `offers`. Но давайте пойдём дальше и попробуем решить эту задачу на этапе выборке. Для этого добавим новое поле с помощью оператора `$addFields`. Поле назовём `offerCount`. Его значением будет результат выполнения оператора `$size` для поля `$offers`. Оператор `$size` позволяет получить количество элементов в массиве. Обратите внимание, что мы дополнительно определяем поле `id`. В него мы сохраняем значение `_id`, предварительно сконвертировав его в строку. Это необходимо сделать, так как результат агрегации не будет соответствовать `CategoryEntity`. По структуре этот то же объект, но в нём не будет псевдонима `id`, который нам предоставляет `Typegoose`. Добавим его самостоятельно. В принципе, задача решена. Если посмотреть вывод списка категорий (сделать запрос), то видно, что поле `offerCount` появилось и заполняется. Но можно немного улучшить результат.
- Loading branch information