|
@@ -295,6 +295,66 @@ console.log(result);
|
|
|
// }
|
|
// }
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+Установка аргументов вызова фабричных функций.
|
|
|
|
|
+
|
|
|
|
|
+```js
|
|
|
|
|
+import {projectData} from '@e22m4u/js-data-projection';
|
|
|
|
|
+
|
|
|
|
|
+// объект будет передан в параметры фабрики
|
|
|
|
|
+const logger = {
|
|
|
|
|
+ log: (message) => console.log(message);
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// фабрика использует logger
|
|
|
|
|
+const getSchema = (logger) => {
|
|
|
|
|
+ logger.log('Factory was invoked!');
|
|
|
|
|
+ return {name: true, secret: false};
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const data = {
|
|
|
|
|
+ name: 'John',
|
|
|
|
|
+ secret: 'john123',
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const result = projectData(getSchema, data, {
|
|
|
|
|
+ factoryArgs: [logger], // <= передача logger в фабрику
|
|
|
|
|
+});
|
|
|
|
|
+// Factory was invoked!
|
|
|
|
|
+console.log(result);
|
|
|
|
|
+// {
|
|
|
|
|
+// name: 'John',
|
|
|
|
|
+// }
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+Доступ к [сервис-контейнеру](https://www.npmjs.com/package/@e22m4u/js-service) внутри фабрики.
|
|
|
|
|
+
|
|
|
|
|
+```js
|
|
|
|
|
+import {ServiceContainer} from '@e22m4u/js-service';
|
|
|
|
|
+import {DataProjector} from '@e22m4u/js-data-projection';
|
|
|
|
|
+
|
|
|
|
|
+// сервис-контейнер доступен только
|
|
|
|
|
+// при использовании DataProjector
|
|
|
|
|
+const projector = new DataProjector();
|
|
|
|
|
+
|
|
|
|
|
+// по умолчанию сервис-контейнер передается
|
|
|
|
|
+// первым аргументом фабрики
|
|
|
|
|
+const getSchema = (container) => {
|
|
|
|
|
+ console.log(container instanceof ServiceContainer); // true
|
|
|
|
|
+ return {name: true, secret: false};
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const data = {
|
|
|
|
|
+ name: 'John',
|
|
|
|
|
+ secret: 'john123',
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const result = projector.project(getSchema, data);
|
|
|
|
|
+console.log(result);
|
|
|
|
|
+// {
|
|
|
|
|
+// name: 'John',
|
|
|
|
|
+// }
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
### Именованные схемы
|
|
### Именованные схемы
|
|
|
|
|
|
|
|
Регистрация и применение именованной схемы.
|
|
Регистрация и применение именованной схемы.
|