Browse Source

chore: updated README.md

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

+ 57 - 0
README.md

@@ -19,6 +19,7 @@
   - [Регистрация глобальных трансформеров](#регистрация-глобальных-трансформеров)
   - [Локальные трансформеры](#локальные-трансформеры)
 - [Пустые значения](#пустые-значения)
+  - [Переопределение пустых значений](#переопределение-пустых-значений)
 - [Репозиторий](#репозиторий)
 - [Фильтрация](#фильтрация)
 - [Связи](#связи)
@@ -907,6 +908,62 @@ dbs.defineModel({
 | `'array'`   | `undefined`, `null`, `[]` |
 | `'object'`  | `undefined`, `null`, `{}` |
 
+### Переопределение пустых значений
+
+Набор пустых значений для любого типа данных можно переопределить. Управление
+этими наборами осуществляется через специальный сервис, который предоставляет
+модуль
+[@e22m4u/js-empty-values](https://www.npmjs.com/package/@e22m4u/js-empty-values)
+(не требует установки).
+
+**EmptyValuesService**
+
+Для переопределения пустых значений необходимо получить экземпляр данного
+сервиса из контейнера схемы и вызвать метод, который принимает тип данных
+и массив новых значений.
+
+Интерфейс:
+
+```ts
+class EmptyValuesService {
+  /**
+   * Установить пустые значения
+   * для определенного типа данных.
+   * 
+   * @param dataType    Тип данных.
+   * @param emptyValues Массив новых пустых значений.
+   */
+  setEmptyValuesOf(
+    dataType: DataType,
+    emptyValues: unknown[],
+  ): this;
+}
+```
+
+**Пример**
+
+По умолчанию, для числовых свойств значение `0` считается пустым. Следующий
+пример демонстрирует, как изменить это поведение, оставив в качестве пустых
+значений только `undefined` и `null`.
+
+```js
+import {DataType} from '@e22m4u/js-repository';
+import {DatabaseSchema} from '@e22m4u/js-repository';
+import {EmptyValuesService} from '@e22m4u/js-empty-values';
+
+const dbs = new DatabaseSchema();
+
+// получение сервиса для работы с пустыми значениями
+const emptyValuesService = dbs.getService(EmptyValuesService);
+
+// переопределение пустых значений для типа DataType.NUMBER
+emptyValuesService.setEmptyValuesOf(DataType.NUMBER, [undefined, null]);
+```
+
+После этого, значение `0` для свойств типа `DataType.NUMBER` больше не будет
+считаться пустым и будет проходить проверки валидаторами, а также не будет
+заменяться значением по умолчанию.
+
 ## Репозиторий
 
 Выполняет операции чтения и записи документов определенной модели.