|
|
@@ -233,7 +233,7 @@ const rep = schema.getRepository('place');
|
|
|
Некоторые методы репозитория опционально принимают параметр `where` для
|
|
|
условий выборки и/или параметр `filter` управляющий возвращаемым значением.
|
|
|
|
|
|
-**where**
|
|
|
+#### where
|
|
|
|
|
|
Рассмотрим применение параметра `where` на примере метода `patch`, который
|
|
|
выполняет поиск и обновление документов по определенному условию.
|
|
|
@@ -286,6 +286,63 @@ await rep.patch(
|
|
|
`{foo: {regexp: 'ba.+'}}` оператор регулярного выражения `regexp`
|
|
|
`{foo: {regexp: 'ba.+', flags: 'i'}}` флаги регулярного выражения
|
|
|
|
|
|
+#### filter
|
|
|
+
|
|
|
+Методы репозитория асинхронны и возвращают `Promise` с некоторым значением.
|
|
|
+Параметр `filter` позволяет влиять на это значение более широким образом,
|
|
|
+чем просто ограничение для затрагиваемых данных. Ниже представлен список
|
|
|
+опциональных полей объекта `filter`, одним из которых является параметр
|
|
|
+`where`, который рассматривался выше.
|
|
|
+
|
|
|
+- `where` объект выборки
|
|
|
+- `order` указание порядка
|
|
|
+- `limit` ограничение количества документов
|
|
|
+- `skip` пропуск документов
|
|
|
+- `fields` выбор необходимых полей документа
|
|
|
+- `include` включение связанных данных в результат (см. Связи)
|
|
|
+
|
|
|
+При использовании метода `find` может потребоваться комбинация параметров
|
|
|
+`limit` и `skip` для механизма пагинации.
|
|
|
+
|
|
|
+```js
|
|
|
+// первый параметр метода `find` принимает
|
|
|
+// объект настроек возвращаемого результата
|
|
|
+const result = await rep.find({
|
|
|
+ limit: 12,
|
|
|
+ skip: 24,
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+Документы могут быть отсортированы по указанным полям и в нужном
|
|
|
+направлении, где `ASC` - по умолчанию, или `DESC` - в обратном порядке.
|
|
|
+
|
|
|
+```js
|
|
|
+const result = await rep.find({
|
|
|
+ // по полю "featured"
|
|
|
+ order: 'featured',
|
|
|
+ // по полю "publishedAt" в обратном порядке
|
|
|
+ order: 'publishedAt DESC',
|
|
|
+ // по нескольким полям в разных направлениях
|
|
|
+ order: ['publishedAt DESC', 'featured ASC', 'id'],
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+Сократить объем документа можно параметром `fields` указав необходимый
|
|
|
+набор полей.
|
|
|
+
|
|
|
+```js
|
|
|
+const result = await rep.find({
|
|
|
+ // включить в результат только поле "title"
|
|
|
+ fields: 'title',
|
|
|
+ // или поле "title", "createdAt" и "featured"
|
|
|
+ fields: ['title', 'createdAt', 'featured'],
|
|
|
+ // первичный ключ документа
|
|
|
+ // указывать не обязательно
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
<!--
|
|
|
```js
|
|
|
// коллекция имеет три документа
|