Browse Source

chore: updated README.md

e22m4u 1 month ago
parent
commit
ace2762fcd
1 changed files with 60 additions and 0 deletions
  1. 60 0
      README.md

+ 60 - 0
README.md

@@ -1050,6 +1050,66 @@ console.log(res); // true
 - `fields: string[]` выбор необходимых свойств модели
 - `include: object` включение связанных данных в результат
 
+**Примеры**
+
+Объект фильтрации позволяет комбинировать различные опции для построения
+сложных запросов. Представим, что нам нужно выбрать из коллекции новости
+для отображения на сайте по следующему набору критериев:
+
+- Заголовок должен содержать слово «Moscow» без учета регистра.
+- Дата публикации должна быть не ранее 15 октября 2025 года.
+- Новость должна содержать один из тегов: «world» или «politic».
+- Новость не должна быть скрытой `hidden: false`.
+- Результат должен быть отсортирован сначала по дате публикации.
+- Нужно пропустить первые 24 записи и выбрать следующие 12.
+- Выборка должна включать только поля `title`, `annotation` и `body`.
+- К каждой новости добавить данные из моделей `author` и `category`.
+
+```js
+// для запроса используется метод репозитория "find"
+// с передачей объекта фильтрации первым аргументом
+const news = await newsRepository.find({
+  where: {
+    title: {regexp: 'Moscow', flags: 'i'},
+    publishedAt: {gte: '2025-10-15T00:00:00.000Z'},
+    tags: {inq: ['world', 'politic']},
+    hidden: false,
+  },
+  order: 'publishedAt DESC',
+  limit: 12,
+  skip: 24,
+  fields: ['title', 'annotation', 'body'],
+  include: ['author', 'category'],
+})
+```
+
+Пример получения профиля пользователя со списком его последних постов.
+
+- Найти пользователя по уникальному имени в свойстве `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
 
 Параметр принимает объект с условиями выборки и поддерживает широкий