Normalizr Вопрос: Как правильно структурировать схему для следующего ответа API - PullRequest
0 голосов
/ 19 октября 2018

У меня есть следующий ответ API от службы WCF, и мне нужно его нормализовать, чтобы он соответствовал объектам EnvironmentsList, FullEnvironmentsList и ServerTypeList в ответе API.Мне нужна помощь в структурировании схемы правильно.

Ответ API:

{
  "EnvironmentList": {
    "EnvironmentDTO": [
      {
        "ID": "77",
        "Name": "SIT UAT02",
        "Administrators": {
          "UserDTO": [
            {
              "UserName": "user1"
            },
            {
              "UserName": "user2"
            }
          ]
        },
        "Servers": {
          "ServerDTO": [
            {
              "ID": "269",
              "Name": "web-u02"
            },
            {
              "ID": "270",
              "Name": "web-u04"
            }
          ]
        }
      },
      {
        "ID": "93",
        "Name": "SIT DEMO",
        "Administrators": null,
        "Servers": null
      }
    ]
  },
  "FullEnvironmentList": {
    "EnvironmentDTO": [
      {
        "ID": "77",
        "Name": "SIT UAT02",
        "Administrators": {
          "UserDTO": [
            {
              "UserName": "user1"
            },
            {
              "UserName": "user2"
            }
          ]
        },
        "Servers": {
          "ServerDTO": [
            {
              "ID": "269",
              "Name": "web-u02"
            },
            {
              "ID": "270",
              "Name": "web-u04"
            }
          ]
        }
      },
      {
        "ID": "93",
        "Name": "SIT DEMO",
        "Administrators": null,
        "Servers": null
      }
    ]
  },
  "ServerTypeList": {
    "ServerType": [
      "Unknown",
      "Database",
      "Web"
    ]
  }
}

Схема

import { schema } from 'normalizr';

const environmentList = new schema.Entity('environments', {}, {idAttribute: 'ID'});
const fullEnvironmentList = new schema.Entity('fullenvironments', {}, {idAttribute: 'ID'});
const administrator = new schema.Entity('administrators', {}, {idAttribute: 'UserName'});
const server = new schema.Entity('servers', {}, {idAttribute: 'ID'});

environmentList.define({
    EnvironmentDTO: [environmentList],
    ServerDTO: [server],
    UserDTO: [administrator],
});

fullEnvironmentList.define({
    EnvironmentDTO: [fullEnvironmentList],
    ServerDTO: [server],
    UserDTO: [administrator],
});

export const environmentListSchema = {
    EnvironmentList: environmentList,
    FullEnvironmentList: fullEnvironmentList,
};

Ожидаемый нормализованный выход

{
  entities: {
    environmentList: {
        EnvironmentDTO: {
          77: [...],
          93: [...]
        },
        UserDTO: {
          user1: [...],
          user2: [...]
        },
        ServerDTO: {
          269: [...],
          270: [...]
        }       
    },
    fullEnvironmentList: {
        EnvironmentDTO: {
          77: [...],
          93: [...]
        },
        UserDTO: {
          user1: [...],
          user2: [...]
        },
        ServerDTO: {
          269: [...],
          270: [...]
        }       
    },
    serverTypeList: {
        ServerType: {
          [...]
        }   
    }   
  }
}

Любая обратная связь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...