|
@@ -226,7 +226,7 @@ const rep = schema.getRepository('place');
|
|
|
Добавляет новый документ в коллекцию и возвращает его.
|
|
Добавляет новый документ в коллекцию и возвращает его.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
-// вызываем метод `create` с передачей
|
|
|
|
|
|
|
+// вызов метода `create` с передачей
|
|
|
// нового состава первым параметром
|
|
// нового состава первым параметром
|
|
|
const person = await rep.create({
|
|
const person = await rep.create({
|
|
|
name: 'Rick Sanchez',
|
|
name: 'Rick Sanchez',
|
|
@@ -234,7 +234,7 @@ const person = await rep.create({
|
|
|
age: 67,
|
|
age: 67,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-// выводим результат
|
|
|
|
|
|
|
+// вывод результата
|
|
|
console.log(person);
|
|
console.log(person);
|
|
|
// {
|
|
// {
|
|
|
// id: 1,
|
|
// id: 1,
|
|
@@ -256,7 +256,7 @@ const result = await rep.create(data, {
|
|
|
fields: ['name', 'age'],
|
|
fields: ['name', 'age'],
|
|
|
|
|
|
|
|
// "include" - включить в результат связанные
|
|
// "include" - включить в результат связанные
|
|
|
- // документы (см. Связанные документы)
|
|
|
|
|
|
|
+ // документы (см. Связи)
|
|
|
include: 'son',
|
|
include: 'son',
|
|
|
include: {son: 'hobbies'},
|
|
include: {son: 'hobbies'},
|
|
|
include: ['son', 'daughter'],
|
|
include: ['son', 'daughter'],
|
|
@@ -269,27 +269,27 @@ const result = await rep.create(data, {
|
|
|
идентификатор не найден, то выбрасывает исключение.
|
|
идентификатор не найден, то выбрасывает исключение.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
-// идентификатор 1 имеет следующую
|
|
|
|
|
|
|
+// идентификатор 12 имеет следующую
|
|
|
// структуру документа
|
|
// структуру документа
|
|
|
// {
|
|
// {
|
|
|
-// id: 1,
|
|
|
|
|
|
|
+// id: 12,
|
|
|
// name: 'Rick Sanchez',
|
|
// name: 'Rick Sanchez',
|
|
|
// dimension: 'C-137',
|
|
// dimension: 'C-137',
|
|
|
// age: 67
|
|
// age: 67
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
-// вызываем метод `replaceById` с передачей
|
|
|
|
|
|
|
+// вызов метода `replaceById` с передачей
|
|
|
// идентификатора и нового состава
|
|
// идентификатора и нового состава
|
|
|
-const person = await rep.replaceById(1, {
|
|
|
|
|
|
|
+const person = await rep.replaceById(12, {
|
|
|
name: 'Morty Smith',
|
|
name: 'Morty Smith',
|
|
|
kind: 'a young teenage boy',
|
|
kind: 'a young teenage boy',
|
|
|
age: 14,
|
|
age: 14,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-// выводим результат
|
|
|
|
|
|
|
+// вывод результата
|
|
|
console.log(person);
|
|
console.log(person);
|
|
|
// {
|
|
// {
|
|
|
-// id: 1,
|
|
|
|
|
|
|
+// id: 12,
|
|
|
// name: 'Morty Smith', <= значение обновлено
|
|
// name: 'Morty Smith', <= значение обновлено
|
|
|
// kind: 'a young teenage boy', <= добавлено новое поле
|
|
// kind: 'a young teenage boy', <= добавлено новое поле
|
|
|
// age: 14 <= значение обновлено
|
|
// age: 14 <= значение обновлено
|
|
@@ -313,16 +313,15 @@ console.log(person);
|
|
|
// "code": "DME"
|
|
// "code": "DME"
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
-// вызываем метод `patchById` с передачей
|
|
|
|
|
-// идентификатора и новых значений обновляемых
|
|
|
|
|
-// полей
|
|
|
|
|
|
|
+// вызов метода `patchById` с передачей идентификатора
|
|
|
|
|
+// и новых значений обновляемых полей
|
|
|
const result = await rep.patchById(24, {
|
|
const result = await rep.patchById(24, {
|
|
|
name: 'Sheremetyevo Airport',
|
|
name: 'Sheremetyevo Airport',
|
|
|
code: 'SVO',
|
|
code: 'SVO',
|
|
|
featured: true,
|
|
featured: true,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-// выводим результат
|
|
|
|
|
|
|
+// вывод результата
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// {
|
|
// {
|
|
|
// "id": 24,
|
|
// "id": 24,
|
|
@@ -354,19 +353,18 @@ console.log(result);
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
|
|
|
-// вызываем метод `patch` с передачей
|
|
|
|
|
|
|
+// вызов метода `patch` с передачей
|
|
|
// значений для обновляемых полей
|
|
// значений для обновляемых полей
|
|
|
const result = await rep.patch({
|
|
const result = await rep.patch({
|
|
|
type: 'city',
|
|
type: 'city',
|
|
|
updatedAt: new Date().toISOString(),
|
|
updatedAt: new Date().toISOString(),
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-// выводим количество затронутых
|
|
|
|
|
-// документов
|
|
|
|
|
|
|
+// вывод количество затронутых документов
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// 2
|
|
// 2
|
|
|
|
|
|
|
|
-// методом `find` просматриваем коллекцию
|
|
|
|
|
|
|
+// просмотр коллекции методом `find`
|
|
|
// для проверки изменений
|
|
// для проверки изменений
|
|
|
const docs = await rep.find();
|
|
const docs = await rep.find();
|
|
|
console.log(docs);
|
|
console.log(docs);
|
|
@@ -399,7 +397,7 @@ const result = await rep.patch(data, {
|
|
|
updatedAt: { // оператор "lt" проверяет значение поля
|
|
updatedAt: { // оператор "lt" проверяет значение поля
|
|
|
lt: '2023-12-02T21:00:00.000Z', // "updatedAt" на наличие более ранней даты,
|
|
lt: '2023-12-02T21:00:00.000Z', // "updatedAt" на наличие более ранней даты,
|
|
|
}, // чем указана в условии
|
|
}, // чем указана в условии
|
|
|
- // см. "Фильтрация"
|
|
|
|
|
|
|
+ // см. Фильтрация
|
|
|
});
|
|
});
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -452,13 +450,13 @@ const result = await rep.find({
|
|
|
limit: 10,
|
|
limit: 10,
|
|
|
skip: 10,
|
|
skip: 10,
|
|
|
|
|
|
|
|
- // "fields" - если определено, то документы выборки
|
|
|
|
|
- // будут включать только указанные поля
|
|
|
|
|
|
|
+ // "fields" - если определено, то результат
|
|
|
|
|
+ // будет включать только указанные поля
|
|
|
fields: 'title',
|
|
fields: 'title',
|
|
|
fields: ['title', 'published'],
|
|
fields: ['title', 'published'],
|
|
|
|
|
|
|
|
// "include" - включить в результат связанные
|
|
// "include" - включить в результат связанные
|
|
|
- // документы (см. Связанные документы)
|
|
|
|
|
|
|
+ // документы (см. Связи)
|
|
|
include: 'author',
|
|
include: 'author',
|
|
|
include: {author: 'city'},
|
|
include: {author: 'city'},
|
|
|
include: ['author', 'categories'],
|
|
include: ['author', 'categories'],
|
|
@@ -470,6 +468,7 @@ const result = await rep.find({
|
|
|
Возвращает первый найденный документ или `undefined`
|
|
Возвращает первый найденный документ или `undefined`
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция имеет три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -484,6 +483,9 @@ const result = await rep.find({
|
|
|
// "title": "Hundreds of bottles"
|
|
// "title": "Hundreds of bottles"
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
+
|
|
|
|
|
+// вызов метода `findOne` без аргументов
|
|
|
|
|
+// возвращает первый документ коллекции
|
|
|
const result = await rep.findOne();
|
|
const result = await rep.findOne();
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// {
|
|
// {
|
|
@@ -492,12 +494,48 @@ console.log(result);
|
|
|
// }
|
|
// }
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+Фильтрация результата (опционально).
|
|
|
|
|
+
|
|
|
|
|
+```js
|
|
|
|
|
+// первый параметр может принимать
|
|
|
|
|
+// объект cо следующими настройками
|
|
|
|
|
+const result = await rep.findOne({
|
|
|
|
|
+ // "where" - фильтрация выборки по условию, где
|
|
|
|
|
+ // указанные поля должны содержать определенные
|
|
|
|
|
+ // значения (см. Фильтрация)
|
|
|
|
|
+ where: {type: 'article', published: true},
|
|
|
|
|
+ where: {description: {like: 'breaking news'}},
|
|
|
|
|
+ where: {publishedAt: {lte: '2023-12-02T21:00:00.000Z'}},
|
|
|
|
|
+
|
|
|
|
|
+ // "order" - сортировка по указанному полю может
|
|
|
|
|
+ // принимать постфикс DESC для обратного порядка
|
|
|
|
|
+ order: 'foo',
|
|
|
|
|
+ order: 'bar DESC',
|
|
|
|
|
+ order: ['foo', 'bar DESC'],
|
|
|
|
|
+
|
|
|
|
|
+ // "skip" - пропуск документов
|
|
|
|
|
+ skip: 10,
|
|
|
|
|
+
|
|
|
|
|
+ // "fields" - если определено, то результат
|
|
|
|
|
+ // будет включать только указанные поля
|
|
|
|
|
+ fields: 'title',
|
|
|
|
|
+ fields: ['title', 'published'],
|
|
|
|
|
+
|
|
|
|
|
+ // "include" - включить в результат связанные
|
|
|
|
|
+ // документы (см. Связи)
|
|
|
|
|
+ include: 'author',
|
|
|
|
|
+ include: {author: 'city'},
|
|
|
|
|
+ include: ['author', 'categories'],
|
|
|
|
|
+});
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
#### findById(id, filter = undefined)
|
|
#### findById(id, filter = undefined)
|
|
|
|
|
|
|
|
Поиск документа по идентификатору.
|
|
Поиск документа по идентификатору.
|
|
|
Возвращает найденный документ или выбрасывает исключение.
|
|
Возвращает найденный документ или выбрасывает исключение.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция содержит три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -512,6 +550,9 @@ console.log(result);
|
|
|
// "title": "Hundreds of bottles"
|
|
// "title": "Hundreds of bottles"
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
+
|
|
|
|
|
+// вызов метода `findById` с передачей
|
|
|
|
|
+// идентификатора искомого документа
|
|
|
const result = await rep.findById(2);
|
|
const result = await rep.findById(2);
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// {
|
|
// {
|
|
@@ -526,6 +567,7 @@ console.log(result);
|
|
|
Возвращает количество удаленных документов.
|
|
Возвращает количество удаленных документов.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция имеет три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -540,21 +582,44 @@ console.log(result);
|
|
|
// "title": "Hundreds of bottles"
|
|
// "title": "Hundreds of bottles"
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
+
|
|
|
|
|
+// вызов метода `delete` без аргументов
|
|
|
|
|
+// удалит все содержимое коллекции
|
|
|
const result = await rep.delete();
|
|
const result = await rep.delete();
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// 3
|
|
// 3
|
|
|
|
|
|
|
|
|
|
+// просмотр коллекции методом `find`
|
|
|
|
|
+// для проверки изменений
|
|
|
const docs = await rep.find();
|
|
const docs = await rep.find();
|
|
|
console.log(docs);
|
|
console.log(docs);
|
|
|
// []
|
|
// []
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+Условия выборки (опционально).
|
|
|
|
|
+
|
|
|
|
|
+```js
|
|
|
|
|
+// первый параметр метода `delete`
|
|
|
|
|
+// принимает условия выборки
|
|
|
|
|
+const result = await rep.delete({
|
|
|
|
|
+ type: 'city', // поле "type" должно иметь значение "city"
|
|
|
|
|
+ description: { // оператор "like" проверяет поле "description"
|
|
|
|
|
+ like: 'the capital', // на наличие подстроки "the capital"
|
|
|
|
|
+ },
|
|
|
|
|
+ updatedAt: { // оператор "lt" проверяет значение поля
|
|
|
|
|
+ lt: '2023-12-02T21:00:00.000Z', // "updatedAt" на наличие более ранней даты,
|
|
|
|
|
+ }, // чем указана в условии
|
|
|
|
|
+ // см. Фильтрация
|
|
|
|
|
+});
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
#### deleteById(id)
|
|
#### deleteById(id)
|
|
|
|
|
|
|
|
Удаляет документ по идентификатору.
|
|
Удаляет документ по идентификатору.
|
|
|
Возвращает `true` в случае успеха или `false` если не найден.
|
|
Возвращает `true` в случае успеха или `false` если не найден.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция имеет три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -569,10 +634,17 @@ console.log(docs);
|
|
|
// "title": "Hundreds of bottles"
|
|
// "title": "Hundreds of bottles"
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
+
|
|
|
|
|
+// вызов метода `deleteById` с передачей
|
|
|
|
|
+// идентификатора удаляемого документа
|
|
|
const result = await rep.deleteById(2);
|
|
const result = await rep.deleteById(2);
|
|
|
|
|
+
|
|
|
|
|
+// вывод результата
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// true
|
|
// true
|
|
|
|
|
|
|
|
|
|
+// просмотр коллекции методом `find`
|
|
|
|
|
+// для проверки изменений
|
|
|
const docs = await rep.find();
|
|
const docs = await rep.find();
|
|
|
console.log(docs);
|
|
console.log(docs);
|
|
|
// [
|
|
// [
|
|
@@ -593,6 +665,7 @@ console.log(docs);
|
|
|
Возвращает `true` если найден, в противном случае `false`.
|
|
Возвращает `true` если найден, в противном случае `false`.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция имеет три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -608,10 +681,14 @@ console.log(docs);
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
|
|
|
|
|
+// вызов метода `exists` с передачей
|
|
|
|
|
+// существующего идентификатора
|
|
|
const result1 = await rep.exists(2);
|
|
const result1 = await rep.exists(2);
|
|
|
console.log(result1);
|
|
console.log(result1);
|
|
|
// true
|
|
// true
|
|
|
|
|
|
|
|
|
|
+// результат проверки несуществующего
|
|
|
|
|
+// идентификатора
|
|
|
const result2 = await rep.exists(10);
|
|
const result2 = await rep.exists(10);
|
|
|
console.log(result2);
|
|
console.log(result2);
|
|
|
// false
|
|
// false
|
|
@@ -623,6 +700,7 @@ console.log(result2);
|
|
|
Возвращает число найденных документов.
|
|
Возвращает число найденных документов.
|
|
|
|
|
|
|
|
```js
|
|
```js
|
|
|
|
|
+// коллекция имеет три документа
|
|
|
// [
|
|
// [
|
|
|
// {
|
|
// {
|
|
|
// "id": 1,
|
|
// "id": 1,
|
|
@@ -637,11 +715,31 @@ console.log(result2);
|
|
|
// "title": "Hundreds of bottles"
|
|
// "title": "Hundreds of bottles"
|
|
|
// }
|
|
// }
|
|
|
// ]
|
|
// ]
|
|
|
|
|
+
|
|
|
|
|
+// вызов метода `count` без аргументов
|
|
|
|
|
+// возвращает общее число документов
|
|
|
const result = await rep.count();
|
|
const result = await rep.count();
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
// 3
|
|
// 3
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+Условия выборки (опционально).
|
|
|
|
|
+
|
|
|
|
|
+```js
|
|
|
|
|
+// первый параметр метода `count`
|
|
|
|
|
+// принимает условия выборки
|
|
|
|
|
+const result = await rep.count({
|
|
|
|
|
+ type: 'city', // поле "type" должно иметь значение "city"
|
|
|
|
|
+ description: { // оператор "like" проверяет поле "description"
|
|
|
|
|
+ like: 'the capital', // на наличие подстроки "the capital"
|
|
|
|
|
+ },
|
|
|
|
|
+ updatedAt: { // оператор "lt" проверяет значение поля
|
|
|
|
|
+ lt: '2023-12-02T21:00:00.000Z', // "updatedAt" на наличие более ранней даты,
|
|
|
|
|
+ }, // чем указана в условии
|
|
|
|
|
+ // см. Фильтрация
|
|
|
|
|
+});
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
## Расширение
|
|
## Расширение
|
|
|
|
|
|
|
|
При использовании метода `getRepository` выполняется проверка на
|
|
При использовании метода `getRepository` выполняется проверка на
|