|
|
@@ -306,10 +306,12 @@ console.log(result);
|
|
|
import {projectData} from '@e22m4u/js-data-projection';
|
|
|
|
|
|
// фабрика для вложенных данных
|
|
|
-const getAddressSchema = () => ({
|
|
|
- city: true,
|
|
|
- zip: false,
|
|
|
-});
|
|
|
+const getAddressSchema = () => {
|
|
|
+ return {
|
|
|
+ city: true,
|
|
|
+ zip: false,
|
|
|
+ };
|
|
|
+};
|
|
|
|
|
|
const userSchema = {
|
|
|
name: true,
|
|
|
@@ -476,6 +478,80 @@ console.log(result);
|
|
|
// }
|
|
|
```
|
|
|
|
|
|
+Регистрация псевдонима именованной схемы.
|
|
|
+
|
|
|
+```js
|
|
|
+import {DataProjector} from '@e22m4u/js-data-projection';
|
|
|
+
|
|
|
+const dps = new DataProjector();
|
|
|
+
|
|
|
+// регистрация основной схемы
|
|
|
+dps.defineSchema({
|
|
|
+ name: 'user',
|
|
|
+ schema: {
|
|
|
+ id: true,
|
|
|
+ name: true,
|
|
|
+ email: false,
|
|
|
+ },
|
|
|
+});
|
|
|
+
|
|
|
+// регистрация псевдонима
|
|
|
+dps.defineSchema({
|
|
|
+ name: 'author', // имя псевдонима
|
|
|
+ schema: 'user', // <= имя основной схемы
|
|
|
+});
|
|
|
+
|
|
|
+const data = {
|
|
|
+ id: 10,
|
|
|
+ name: 'Fedor',
|
|
|
+ email: 'fedor@example.com',
|
|
|
+};
|
|
|
+
|
|
|
+// проекция данных по имени псевдонима
|
|
|
+const result = dps.projectData(data, 'author');
|
|
|
+console.log(result);
|
|
|
+// {
|
|
|
+// id: 10,
|
|
|
+// name: 'Fedor'
|
|
|
+// }
|
|
|
+```
|
|
|
+
|
|
|
+Использование фабрики при регистрации именованной схемы.
|
|
|
+
|
|
|
+```js
|
|
|
+import {DataProjector} from '@e22m4u/js-data-projection';
|
|
|
+
|
|
|
+const dps = new DataProjector();
|
|
|
+
|
|
|
+// создание фабрики
|
|
|
+const getUserSchema = () => {
|
|
|
+ return {
|
|
|
+ id: true,
|
|
|
+ name: true,
|
|
|
+ email: false,
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
+// регистрация схемы
|
|
|
+dps.defineSchema({
|
|
|
+ name: 'user',
|
|
|
+ schema: getUserSchema, // <= фабрика вместо схемы
|
|
|
+});
|
|
|
+
|
|
|
+const data = {
|
|
|
+ id: 10,
|
|
|
+ name: 'Fedor',
|
|
|
+ email: 'fedor@example.com',
|
|
|
+};
|
|
|
+
|
|
|
+const result = dps.projectData(data, 'user');
|
|
|
+console.log(result);
|
|
|
+// {
|
|
|
+// id: 10,
|
|
|
+// name: 'Fedor'
|
|
|
+// }
|
|
|
+```
|
|
|
+
|
|
|
Реализация пользовательской функции разрешения имен.
|
|
|
|
|
|
```js
|