@e22m4u/js-repository-mongodb-adapter 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -20
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
## @e22m4u/js-repository-mongodb-adapter
|
|
2
2
|
|
|
3
|
-
MongoDB адаптер для
|
|
3
|
+
MongoDB адаптер для
|
|
4
|
+
[@e22m4u/js-repository](https://www.npmjs.com/package/@e22m4u/js-repository).
|
|
5
|
+
|
|
6
|
+
- [Установка](#установка)
|
|
7
|
+
- [Описание](#описание)
|
|
8
|
+
- [Источник данных](#источник-данных)
|
|
9
|
+
- [Ограничения](#ограничения)
|
|
10
|
+
- [Преобразование операторов](#преобразование-операторов)
|
|
11
|
+
- [Тесты](#тесты)
|
|
12
|
+
- [Лицензия](#лицензия)
|
|
4
13
|
|
|
5
14
|
## Установка
|
|
6
15
|
|
|
@@ -8,20 +17,43 @@ MongoDB адаптер для [@e22m4u/js-repository](https://www.npmjs.com/pack
|
|
|
8
17
|
npm install @e22m4u/js-repository-mongodb-adapter
|
|
9
18
|
```
|
|
10
19
|
|
|
11
|
-
##
|
|
20
|
+
## Описание
|
|
21
|
+
|
|
22
|
+
Адаптер предоставляет возможность использовать MongoDB в качестве хранилища
|
|
23
|
+
данных для `@e22m4u/js-repository`. Он автоматически преобразует названия
|
|
24
|
+
моделей в названия коллекций, а также выполняет преобразование стандартных
|
|
25
|
+
операторов фильтрации в нативные запросы MongoDB.
|
|
26
|
+
|
|
27
|
+
#### ObjectId
|
|
28
|
+
|
|
29
|
+
Взаимодействие с репозиторием происходит с использованием строкового
|
|
30
|
+
представления идентификаторов. Адаптер самостоятельно преобразует строки
|
|
31
|
+
в `ObjectId` перед отправкой запросов в базу данных и выполняет обратное
|
|
32
|
+
преобразование при получении результатов. Это позволяет работать
|
|
33
|
+
с идентификаторами как с обычными строками без необходимости импортировать
|
|
34
|
+
`ObjectId` из драйвера MongoDB.
|
|
12
35
|
|
|
13
|
-
|
|
36
|
+
## Источник данных
|
|
14
37
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| protocol | `'mongodb'` |
|
|
18
|
-
| host | `'127.0.0.1'` |
|
|
19
|
-
| port | `27017` |
|
|
20
|
-
| database | `'database'` |
|
|
21
|
-
| username | `undefined` |
|
|
22
|
-
| password | `undefined` |
|
|
38
|
+
Источник данных для MongoDB адаптера определяется с помощью метода
|
|
39
|
+
`defineDatasource` экземпляра `DatabaseSchema`.
|
|
23
40
|
|
|
24
|
-
|
|
41
|
+
**Параметры**
|
|
42
|
+
|
|
43
|
+
| название | значение по умолчанию | описание |
|
|
44
|
+
|----------|-----------------------|------------------------|
|
|
45
|
+
| protocol | `'mongodb'` | протокол подключения |
|
|
46
|
+
| host | `'127.0.0.1'` | имя хоста или IP адрес |
|
|
47
|
+
| port | `27017` | порт |
|
|
48
|
+
| database | `'database'` | название базы данных |
|
|
49
|
+
| username | `undefined` | имя пользователя |
|
|
50
|
+
| password | `undefined` | пароль |
|
|
51
|
+
|
|
52
|
+
Кроме перечисленных выше, адаптер поддерживает все стандартные параметры
|
|
53
|
+
`MongoClientOptions` из официального драйвера MongoDB для NodeJS. Эти
|
|
54
|
+
параметры можно передавать напрямую в определении источника данных.
|
|
55
|
+
|
|
56
|
+
**Пример**
|
|
25
57
|
|
|
26
58
|
```js
|
|
27
59
|
import {DatabaseSchema} from '@e22m4u/js-repository';
|
|
@@ -30,8 +62,8 @@ const dbs = new DatabaseSchema();
|
|
|
30
62
|
|
|
31
63
|
// объявление источника
|
|
32
64
|
dbs.defineDatasource({
|
|
33
|
-
name: 'myMongo',
|
|
34
|
-
adapter: 'mongodb',
|
|
65
|
+
name: 'myMongo', // название источника
|
|
66
|
+
adapter: 'mongodb', // имя адаптера
|
|
35
67
|
// параметры
|
|
36
68
|
host: '127.0.0.1',
|
|
37
69
|
port: 27017,
|
|
@@ -40,26 +72,64 @@ dbs.defineDatasource({
|
|
|
40
72
|
|
|
41
73
|
// объявление модели
|
|
42
74
|
dbs.defineModel({
|
|
43
|
-
name: 'user',
|
|
44
|
-
datasource: 'myMongo', // используемый источник
|
|
45
|
-
properties: {
|
|
75
|
+
name: 'user', // название модели
|
|
76
|
+
datasource: 'myMongo', // используемый источник
|
|
77
|
+
properties: { // поля модели
|
|
46
78
|
name: 'string',
|
|
47
79
|
surname: 'string',
|
|
48
80
|
},
|
|
49
81
|
});
|
|
50
82
|
|
|
51
|
-
//
|
|
83
|
+
// получение репозитория и создание документа
|
|
52
84
|
const userRep = dbs.getRepository('user');
|
|
53
85
|
const user = await userRep.create({name: 'John', surname: 'Doe'});
|
|
54
86
|
|
|
55
87
|
console.log(user);
|
|
56
88
|
// {
|
|
57
|
-
// id: '64f3454e5e0893c13f9bf47e',
|
|
89
|
+
// id: '64f3454e5e0893c13f9bf47e', // id является строкой
|
|
58
90
|
// name: 'John',
|
|
59
91
|
// surname: 'Doe',
|
|
60
92
|
// }
|
|
61
93
|
```
|
|
62
94
|
|
|
95
|
+
## Ограничения
|
|
96
|
+
|
|
97
|
+
- **Первичный ключ.**
|
|
98
|
+
Свойство, выступающее в роли первичного ключа, должно иметь
|
|
99
|
+
название `id` или `_id`. Использование других названий для
|
|
100
|
+
первичного ключа не поддерживается.
|
|
101
|
+
|
|
102
|
+
- **Автогенерация идентификатора.**
|
|
103
|
+
Автоматическая генерация `ObjectId` при создании нового документа
|
|
104
|
+
работает только для свойств с типом `string` или `any`. Для других
|
|
105
|
+
типов данных значение первичного ключа необходимо указывать вручную.
|
|
106
|
+
|
|
107
|
+
## Преобразование операторов
|
|
108
|
+
|
|
109
|
+
Адаптер преобразует стандартные операторы фильтрации в нативные операторы
|
|
110
|
+
запросов MongoDB.
|
|
111
|
+
|
|
112
|
+
| оператор | MongoDB |
|
|
113
|
+
|----------|--------------------------------|
|
|
114
|
+
| `and` | `$and` |
|
|
115
|
+
| `or` | `$or` |
|
|
116
|
+
| `nor` | `$nor` |
|
|
117
|
+
| `eq` | `$eq` |
|
|
118
|
+
| `neq` | `$ne` |
|
|
119
|
+
| `gt` | `$gt` |
|
|
120
|
+
| `lt` | `$lt` |
|
|
121
|
+
| `gte` | `$gte` |
|
|
122
|
+
| `lte` | `$lte` |
|
|
123
|
+
| `inq` | `$in` |
|
|
124
|
+
| `nin` | `$nin` |
|
|
125
|
+
| `between`| `{$gte: ..., $lte: ...}` |
|
|
126
|
+
| `exists` | `$exists` |
|
|
127
|
+
| `like` | `$regex` |
|
|
128
|
+
| `nlike` | `$not` с `$regex` |
|
|
129
|
+
| `ilike` | `$regex` с флагом `i` |
|
|
130
|
+
| `nilike` | `$not` с `$regex` и флагом `i` |
|
|
131
|
+
| `regexp` | `$regex` |
|
|
132
|
+
|
|
63
133
|
## Тесты
|
|
64
134
|
|
|
65
135
|
Запуск контейнера `mongo:latest` скриптом `setup.sh`
|
|
@@ -76,4 +146,4 @@ npm run test
|
|
|
76
146
|
|
|
77
147
|
## Лицензия
|
|
78
148
|
|
|
79
|
-
MIT
|
|
149
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e22m4u/js-repository-mongodb-adapter",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "MongoDB адаптер для @e22m4u/js-repository",
|
|
5
5
|
"author": "Mikhail Evstropov <e22m4u@yandex.ru>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,28 +38,28 @@
|
|
|
38
38
|
"prepare": "husky"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"@e22m4u/js-format": "~0.2.1",
|
|
41
42
|
"mongodb": "6.20.0"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
|
44
|
-
"@e22m4u/js-format": "~0.2.0",
|
|
45
45
|
"@e22m4u/js-repository": "~0.6.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@commitlint/cli": "~20.1.0",
|
|
49
49
|
"@commitlint/config-conventional": "~20.0.0",
|
|
50
|
-
"@eslint/js": "~9.39.
|
|
50
|
+
"@eslint/js": "~9.39.1",
|
|
51
51
|
"c8": "~10.1.3",
|
|
52
52
|
"chai": "~6.2.0",
|
|
53
53
|
"chai-as-promised": "~8.0.2",
|
|
54
54
|
"dotenv": "~17.2.3",
|
|
55
55
|
"esbuild": "~0.25.12",
|
|
56
|
-
"eslint": "~9.39.
|
|
56
|
+
"eslint": "~9.39.1",
|
|
57
57
|
"eslint-config-prettier": "~10.1.8",
|
|
58
58
|
"eslint-plugin-chai-expect": "~3.1.0",
|
|
59
59
|
"eslint-plugin-mocha": "~11.2.0",
|
|
60
60
|
"globals": "~16.5.0",
|
|
61
61
|
"husky": "~9.1.7",
|
|
62
|
-
"mocha": "~11.7.
|
|
62
|
+
"mocha": "~11.7.5",
|
|
63
63
|
"prettier": "~3.6.2",
|
|
64
64
|
"rimraf": "~6.1.0"
|
|
65
65
|
}
|