|
@@ -1050,27 +1050,14 @@ console.log(res); // true
|
|
|
- `fields: string|string[]` выбор необходимых свойств модели;
|
|
- `fields: string|string[]` выбор необходимых свойств модели;
|
|
|
- `include: object` включение связанных данных в результат;
|
|
- `include: object` включение связанных данных в результат;
|
|
|
|
|
|
|
|
-**Примеры**
|
|
|
|
|
-
|
|
|
|
|
-Объект фильтрации позволяет комбинировать различные опции для построения
|
|
|
|
|
-сложных запросов. Представим, что нам нужно выбрать из коллекции новости
|
|
|
|
|
-для отображения на сайте по следующему набору критериев:
|
|
|
|
|
-
|
|
|
|
|
-- Заголовок должен содержать слово «Moscow» без учета регистра.
|
|
|
|
|
-- Дата публикации должна быть не ранее 15 октября 2025 года.
|
|
|
|
|
-- Новость должна содержать один из тегов «world» или «politic».
|
|
|
|
|
-- Новость не должна быть скрытой `hidden: false`.
|
|
|
|
|
-- Результат должен быть отсортирован по дате публикации.
|
|
|
|
|
-- Нужно пропустить первые 24 записи и выбрать следующие 12.
|
|
|
|
|
-- Выборка должна включать только поля `title`, `annotation` и `body`.
|
|
|
|
|
-- К каждой новости добавить связанные данные `author` и `category`.
|
|
|
|
|
|
|
+**Пример**
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
// для запроса используется метод репозитория "find"
|
|
// для запроса используется метод репозитория "find"
|
|
|
// с передачей объекта фильтрации первым аргументом
|
|
// с передачей объекта фильтрации первым аргументом
|
|
|
const news = await newsRepository.find({
|
|
const news = await newsRepository.find({
|
|
|
where: {
|
|
where: {
|
|
|
- title: {regexp: 'Moscow', flags: 'i'},
|
|
|
|
|
|
|
+ title: {like: '%Moscow%'},
|
|
|
publishedAt: {gte: '2025-10-15T00:00:00.000Z'},
|
|
publishedAt: {gte: '2025-10-15T00:00:00.000Z'},
|
|
|
tags: {inq: ['world', 'politic']},
|
|
tags: {inq: ['world', 'politic']},
|
|
|
hidden: false,
|
|
hidden: false,
|
|
@@ -1083,33 +1070,6 @@ const news = await newsRepository.find({
|
|
|
})
|
|
})
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-Пример получения профиля пользователя со списком его последних постов.
|
|
|
|
|
-
|
|
|
|
|
-- Найти пользователя по уникальному имени в свойстве `username`.
|
|
|
|
|
-- Из данных пользователя вернуть только имя, URL аватара и биографию.
|
|
|
|
|
-- Включить в результат 5 *опубликованных* постов данного пользователя.
|
|
|
|
|
-- Для каждого поста вернуть только заголовок и дату создания.
|
|
|
|
|
-- К каждому посту также прикрепить данные о категории.
|
|
|
|
|
-
|
|
|
|
|
-```js
|
|
|
|
|
-// для запроса используется метод "findOne"
|
|
|
|
|
-// и вложенные фильтры в опции "include"
|
|
|
|
|
-const userProfile = await userRepository.findOne({
|
|
|
|
|
- where: {username: 'john.doe'},
|
|
|
|
|
- fields: ['username', 'avatarUrl', 'bio'],
|
|
|
|
|
- include: {
|
|
|
|
|
- relation: 'posts',
|
|
|
|
|
- scope: {
|
|
|
|
|
- where: {status: 'published'},
|
|
|
|
|
- order: 'createdAt DESC',
|
|
|
|
|
- limit: 5,
|
|
|
|
|
- fields: ['title', 'createdAt'],
|
|
|
|
|
- include: 'category',
|
|
|
|
|
- },
|
|
|
|
|
- },
|
|
|
|
|
-});
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
### where
|
|
### where
|
|
|
|
|
|
|
|
Параметр принимает объект с условиями выборки и поддерживает широкий
|
|
Параметр принимает объект с условиями выборки и поддерживает широкий
|