Как отфильтровать список данных по идентификатору для моего компонента реакции, чтобы получить имя объекта

Итак, у меня есть список данных, поступающих с моего redux-store, у меня есть JSON.stringified, поэтому я могу его прочитать. Я хочу отфильтровать список permissions, который предоставляет мне только id, чтобы получить name каждого разрешения, поэтому я могу отобразить Permission Name в моем React Component.

Вот один образец предмета:

{
    "id": "1",
    "type": "role-templates",
    "links": { "self": "http://localhost/v1/role-templates/1" },
    "attributes": {
      "name": "Org Admin",
      "description": "Administers an Organization"
    },
    "relationships": {
      "role-template-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/role-templates/1/relationships/role-template-permission-list",
          "related":
            "http://localhost/v1/role-templates/1/role-template-permission-list"
        }
      },
      "permissions": {
        "links": {
          "self":
            "http://localhost/v1/role-templates/1/relationships/permissions",
          "related":
            "http://localhost/v1/role-templates/1/permissions"
        },
        "data": [
          { "type": "permissions", "id": "1" },
          { "type": "permissions", "id": "2" },
          { "type": "permissions", "id": "3" },
          { "type": "permissions", "id": "4" },
          { "type": "permissions", "id": "5" },
          { "type": "permissions", "id": "6" },
          { "type": "permissions", "id": "7" },
          { "type": "permissions", "id": "8" },
          { "type": "permissions", "id": "9" },
          { "type": "permissions", "id": "10" },
          { "type": "permissions", "id": "11" },
          { "type": "permissions", "id": "12" },
          { "type": "permissions", "id": "13" },
          { "type": "permissions", "id": "14" },
          { "type": "permissions", "id": "15" },
          { "type": "permissions", "id": "17" },
          { "type": "permissions", "id": "18" },
          { "type": "permissions", "id": "19" },
          { "type": "permissions", "id": "20" },
          { "type": "permissions", "id": "21" },
          { "type": "permissions", "id": "23" },
          { "type": "permissions", "id": "24" }
        ]
      }
    }

Это данные для конечной точки разрешений от бэкэнда снова в JSON.stringified it for this slack question:

[
  {
    "id": "1",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/1" },
    "attributes": {
      "name": "Administer Source List",
      "description": "Data Source",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/1/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/1/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/1/relationships/roles",
          "related": "http://localhost/v1/permissions/1/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "2",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/2" },
    "attributes": {
      "name": "Administer Common Layers",
      "description": "Data Source",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/2/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/2/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/2/relationships/roles",
          "related": "http://localhost/v1/permissions/2/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "3",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/3" },
    "attributes": {
      "name": "Do benchmark tagging",
      "description": "Data Source",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/3/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/3/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/3/relationships/roles",
          "related": "http://localhost/v1/permissions/3/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "4",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/4" },
    "attributes": {
      "name": "Do trend mapping",
      "description": "Data Source",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/4/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/4/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/4/relationships/roles",
          "related": "http://localhost/v1/permissions/4/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "5",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/5" },
    "attributes": {
      "name": "Map custom values (for each data source)",
      "description": "Data Source",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/5/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/5/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/5/relationships/roles",
          "related": "http://localhost/v1/permissions/5/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "6",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/6" },
    "attributes": {
      "name": "Administer Data Sets",
      "description": "Data Sets",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/6/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/6/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/6/relationships/roles",
          "related": "http://localhost/v1/permissions/6/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "2" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "8" }
        ]
      }
    }
  },
  {
    "id": "7",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/7" },
    "attributes": {
      "name": "Create Campaigns",
      "description": "Campaigns",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/7/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/7/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/7/relationships/roles",
          "related": "http://localhost/v1/permissions/7/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "8",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/8" },
    "attributes": {
      "name": "Access/modify campaign setup",
      "description": "Campaigns",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/8/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/8/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/8/relationships/roles",
          "related": "http://localhost/v1/permissions/8/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "3" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "9" }
        ]
      }
    }
  },
  {
    "id": "9",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/9" },
    "attributes": {
      "name": "Launch campaigns",
      "description": "Campaigns",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/9/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/9/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/9/relationships/roles",
          "related": "http://localhost/v1/permissions/9/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "10",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/10" },
    "attributes": {
      "name": "Create org-wide survey-related notifications",
      "description": "Campaigns",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/10/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/10/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/10/relationships/roles",
          "related": "http://localhost/v1/permissions/10/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "11",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/11" },
    "attributes": {
      "name": "View Reports",
      "description": "Reports",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/11/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/11/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/11/relationships/roles",
          "related": "http://localhost/v1/permissions/11/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "4" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "10" }
        ]
      }
    }
  },
  {
    "id": "12",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/12" },
    "attributes": {
      "name": "Modify prebuilt reports",
      "description": "Reports",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/12/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/12/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/12/relationships/roles",
          "related": "http://localhost/v1/permissions/12/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "13",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/13" },
    "attributes": {
      "name": "Create new reports",
      "description": "Reports",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/13/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/13/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/13/relationships/roles",
          "related": "http://localhost/v1/permissions/13/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "4" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "10" }
        ]
      }
    }
  },
  {
    "id": "14",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/14" },
    "attributes": {
      "name": "Share reports with rest of org",
      "description": "Reports",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/14/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/14/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/14/relationships/roles",
          "related": "http://localhost/v1/permissions/14/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "15",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/15" },
    "attributes": {
      "name": "Share filters with rest of org",
      "description": "Reports",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/15/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/15/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/15/relationships/roles",
          "related": "http://localhost/v1/permissions/15/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "16",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/16" },
    "attributes": {
      "name": "Create portfolio",
      "description": "APT",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/16/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/16/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/16/relationships/roles",
          "related": "http://localhost/v1/permissions/16/roles"
        },
        "data": []
      }
    }
  },
  {
    "id": "17",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/17" },
    "attributes": {
      "name": "Access all portfolios (at org)",
      "description": "APT",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/17/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/17/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/17/relationships/roles",
          "related": "http://localhost/v1/permissions/17/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "5" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "11" }
        ]
      }
    }
  },
  {
    "id": "18",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/18" },
    "attributes": {
      "name": "Assign action plans",
      "description": "APT",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/18/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/18/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/18/relationships/roles",
          "related": "http://localhost/v1/permissions/18/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "5" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "11" }
        ]
      }
    }
  },
  {
    "id": "19",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/19" },
    "attributes": {
      "name": "Work on action plans",
      "description": "APT",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/19/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/19/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/19/relationships/roles",
          "related": "http://localhost/v1/permissions/19/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "5" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "11" }
        ]
      }
    }
  },
  {
    "id": "20",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/20" },
    "attributes": {
      "name": "Administer role templates for org",
      "description": "Manage Users",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/20/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/20/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/20/relationships/roles",
          "related": "http://localhost/v1/permissions/20/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  },
  {
    "id": "21",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/21" },
    "attributes": {
      "name": "Add/edit/delete non org-admin users at org",
      "description": "Manage Users",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/21/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/21/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/21/relationships/roles",
          "related": "http://localhost/v1/permissions/21/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "6" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "12" }
        ]
      }
    }
  },
  {
    "id": "22",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/22" },
    "attributes": {
      "name": "Add/edit/dete ORg Admin users at org",
      "description": "Manage Users",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/22/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/22/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/22/relationships/roles",
          "related": "http://localhost/v1/permissions/22/roles"
        },
        "data": []
      }
    }
  },
  {
    "id": "23",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/23" },
    "attributes": {
      "name": "Administer access patterns at org",
      "description": "Manage Users",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/23/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/23/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/23/relationships/roles",
          "related": "http://localhost/v1/permissions/23/roles"
        },
        "data": [
          { "type": "roles", "id": "1" },
          { "type": "roles", "id": "6" },
          { "type": "roles", "id": "7" },
          { "type": "roles", "id": "12" }
        ]
      }
    }
  },
  {
    "id": "24",
    "type": "permissions",
    "links": { "self": "http://localhost/v1/permissions/24" },
    "attributes": {
      "name": "Switch user (\"Impersonate\" another user)",
      "description": "Manage Users",
      "is-active": null
    },
    "relationships": {
      "role-permission-list": {
        "links": {
          "self":
            "http://localhost/v1/permissions/24/relationships/role-permission-list",
          "related":
            "http://localhost/v1/permissions/24/role-permission-list"
        }
      },
      "roles": {
        "links": {
          "self":
            "http://localhost/v1/permissions/24/relationships/roles",
          "related": "http://localhost/v1/permissions/24/roles"
        },
        "data": [{ "type": "roles", "id": "1" }, { "type": "roles", "id": "7" }]
      }
    }
  }
]

Итак, как вы можете видеть, каждое разрешение имеет name, description. Итак, я хочу получить имя каждого permission с помощью фильтра id.

Итак, вы хотите создать отдельный запрос для каждого id в массиве data, чтобы получить данные каждого разрешения?

Tholle 10.08.2018 16:55

@Tholle Нужно ли мне создавать отдельный запрос? Разве я не могу просто filter, а затем map?

Amen Ra 10.08.2018 16:57

Я не вижу этих данных в объекте в вашем первом фрагменте. Я что-то пропустил?

Tholle 10.08.2018 16:58

@ Дайте ему эти штуки { "type": "permissions", "id": "1" }, Я хочу использовать id, чтобы получить имя. Каждый id имеет определенное разрешение, связанное с ним.

Amen Ra 10.08.2018 16:59

Извините, я, должно быть, неправильно понял ваш вопрос. Я думал, что у вас есть все идентификаторы во внешнем интерфейсе, а потом захотелось получить из них name и description, сделав дополнительный запрос. Или у вас в интерфейсе есть name и description?

Tholle 10.08.2018 17:01

@Tholle Да, я их неправильно говорю. Вы правы, у меня есть все идентификаторы, и я хочу получить имя, и, думаю, мне нужно сделать дополнительный запрос. Как мне это сделать?

Amen Ra 10.08.2018 17:03

Это зависит от того, как реализован бэкэнд. Возможно, вы можете сделать запрос, например, /permissionresource/1 или что-то в этом роде.

Tholle 10.08.2018 17:06

Вы можете запросить их все одновременно, если вы принимаете массив params[:ids] в своем действии index в контроллере. Однако я не знаком с JSONAPI::Resource.

3limin4t0r 10.08.2018 17:13

@JohanWentholt У меня это как объект javascript. Я просто JSON stringified для этого вопроса. Как я могу реализовать запрос?

Amen Ra 10.08.2018 17:15

@Tholle Теперь я включил данные массива permissions для всех разрешений.

Amen Ra 10.08.2018 17:29

@Tholle Теперь у меня есть это требование. Как вы думаете, вы можете помочь мне дошло до этого? Мне все еще нужно сопоставить идентификаторы role-templates с массивом permissions и поместить звездочки в ячейки, у которых есть разрешения.

Amen Ra 13.08.2018 20:09

@AmenRa Не обновляйте вопрос после ответа. Откатился на предыдущую ревизию. Пожалуйста, создайте новый вопрос.

Tholle 13.08.2018 20:11

@Tholle Прошу прощения, вот мой новый вопрос, тогда stackoverflow.com/questions/51826360/…

Amen Ra 13.08.2018 20:30
1
13
257
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Данные вашего клиента содержат ссылку для получения нужных вам данных.

roleTemplate.relationships.permissions.links.self
//=> "http://localhost/v1/role-templates/1/relationships/permissions"

const roleTemplate = {
    id: "1",
    type: "role-templates",
    links: {
        self: "http://localhost/v1/role-templates/1"
    },
    attributes: {
        name: "Org Admin",
        description: "Administers an Organization"
    },
    relationships: {
        "role-template-permission-list": {
            links: {
                self: "http://localhost/v1/role-templates/1/relationships/role-template-permission-list",
                related: "http://localhost/v1/role-templates/1/role-template-permission-list"
            }
        },
        permissions: {
            links: {
                self: "http://localhost/v1/role-templates/1/relationships/permissions",
                related: "http://localhost/v1/role-templates/1/permissions"
            },
            data: [
                {type: "permissions", id: "1"},
                {type: "permissions", id: "2"},
                {type: "permissions", id: "3"},
                {type: "permissions", id: "4"},
                {type: "permissions", id: "5"},
                {type: "permissions", id: "6"},
                {type: "permissions", id: "7"},
                {type: "permissions", id: "8"},
                {type: "permissions", id: "9"},
                {type: "permissions", id: "10"},
                {type: "permissions", id: "11"},
                {type: "permissions", id: "12"},
                {type: "permissions", id: "13"},
                {type: "permissions", id: "14"},
                {type: "permissions", id: "15"},
                {type: "permissions", id: "17"},
                {type: "permissions", id: "18"},
                {type: "permissions", id: "19"},
                {type: "permissions", id: "20"},
                {type: "permissions", id: "21"},
                {type: "permissions", id: "23"},
                {type: "permissions", id: "24"}
            ]
        }
    }
};

console.log( roleTemplate.relationships.permissions.links.self );

Запрос с этого URL-адреса должен возвращать все разрешения, принадлежащие вашему шаблону роли, включая название и описание.

Ответ принят как подходящий

Вы можете использовать map для всех элементов данных permissions и find для элемента данных в результате второго запроса, который содержит name и description.

const result = roleTemplate.relationships.permissions.data.map(permission => {
  const permissionData = data.find(element => element.id === permission.id);
  return {
    id: permission.id,
    name: permissionData.attributes.name,
    description: permissionData.attributes.description
  };
});

const roleTemplate = {
  id: "1",
  type: "role-templates",
  links: { self: "http://localhost/v1/role-templates/1" },
  attributes: {
    name: "Org Admin",
    description: "Administers an Organization"
  },
  relationships: {
    "role-template-permission-list": {
      links: {
        self:
          "http://localhost/v1/role-templates/1/relationships/role-template-permission-list",
        related:
          "http://localhost/v1/role-templates/1/role-template-permission-list"
      }
    },
    permissions: {
      links: {
        self: "http://localhost/v1/role-templates/1/relationships/permissions",
        related: "http://localhost/v1/role-templates/1/permissions"
      },
      data: [
        { type: "permissions", id: "1" },
        { type: "permissions", id: "2" },
        { type: "permissions", id: "3" },
        { type: "permissions", id: "4" },
        { type: "permissions", id: "5" },
        { type: "permissions", id: "6" },
        { type: "permissions", id: "7" },
        { type: "permissions", id: "8" },
        { type: "permissions", id: "9" },
        { type: "permissions", id: "10" },
        { type: "permissions", id: "11" },
        { type: "permissions", id: "12" },
        { type: "permissions", id: "13" },
        { type: "permissions", id: "14" },
        { type: "permissions", id: "15" },
        { type: "permissions", id: "17" },
        { type: "permissions", id: "18" },
        { type: "permissions", id: "19" },
        { type: "permissions", id: "20" },
        { type: "permissions", id: "21" },
        { type: "permissions", id: "23" },
        { type: "permissions", id: "24" }
      ]
    }
  }
};

const data = [
  {
    id: "1",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/1" },
    attributes: {
      name: "Administer Source List",
      description: "Data Source",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/1/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/1/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/1/relationships/roles",
          related: "http://localhost/v1/permissions/1/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "2",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/2" },
    attributes: {
      name: "Administer Common Layers",
      description: "Data Source",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/2/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/2/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/2/relationships/roles",
          related: "http://localhost/v1/permissions/2/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "3",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/3" },
    attributes: {
      name: "Do benchmark tagging",
      description: "Data Source",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/3/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/3/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/3/relationships/roles",
          related: "http://localhost/v1/permissions/3/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "4",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/4" },
    attributes: {
      name: "Do trend mapping",
      description: "Data Source",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/4/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/4/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/4/relationships/roles",
          related: "http://localhost/v1/permissions/4/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "5",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/5" },
    attributes: {
      name: "Map custom values (for each data source)",
      description: "Data Source",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/5/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/5/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/5/relationships/roles",
          related: "http://localhost/v1/permissions/5/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "6",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/6" },
    attributes: {
      name: "Administer Data Sets",
      description: "Data Sets",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/6/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/6/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/6/relationships/roles",
          related: "http://localhost/v1/permissions/6/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "2" },
          { type: "roles", id: "7" },
          { type: "roles", id: "8" }
        ]
      }
    }
  },
  {
    id: "7",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/7" },
    attributes: {
      name: "Create Campaigns",
      description: "Campaigns",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/7/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/7/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/7/relationships/roles",
          related: "http://localhost/v1/permissions/7/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "8",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/8" },
    attributes: {
      name: "Access/modify campaign setup",
      description: "Campaigns",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/8/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/8/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/8/relationships/roles",
          related: "http://localhost/v1/permissions/8/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "3" },
          { type: "roles", id: "7" },
          { type: "roles", id: "9" }
        ]
      }
    }
  },
  {
    id: "9",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/9" },
    attributes: {
      name: "Launch campaigns",
      description: "Campaigns",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/9/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/9/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/9/relationships/roles",
          related: "http://localhost/v1/permissions/9/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "10",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/10" },
    attributes: {
      name: "Create org-wide survey-related notifications",
      description: "Campaigns",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/10/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/10/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/10/relationships/roles",
          related: "http://localhost/v1/permissions/10/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "11",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/11" },
    attributes: {
      name: "View Reports",
      description: "Reports",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/11/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/11/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/11/relationships/roles",
          related: "http://localhost/v1/permissions/11/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "4" },
          { type: "roles", id: "7" },
          { type: "roles", id: "10" }
        ]
      }
    }
  },
  {
    id: "12",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/12" },
    attributes: {
      name: "Modify prebuilt reports",
      description: "Reports",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/12/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/12/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/12/relationships/roles",
          related: "http://localhost/v1/permissions/12/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "13",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/13" },
    attributes: {
      name: "Create new reports",
      description: "Reports",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/13/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/13/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/13/relationships/roles",
          related: "http://localhost/v1/permissions/13/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "4" },
          { type: "roles", id: "7" },
          { type: "roles", id: "10" }
        ]
      }
    }
  },
  {
    id: "14",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/14" },
    attributes: {
      name: "Share reports with rest of org",
      description: "Reports",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/14/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/14/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/14/relationships/roles",
          related: "http://localhost/v1/permissions/14/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "15",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/15" },
    attributes: {
      name: "Share filters with rest of org",
      description: "Reports",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/15/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/15/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/15/relationships/roles",
          related: "http://localhost/v1/permissions/15/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "16",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/16" },
    attributes: {
      name: "Create portfolio",
      description: "APT",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/16/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/16/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/16/relationships/roles",
          related: "http://localhost/v1/permissions/16/roles"
        },
        data: []
      }
    }
  },
  {
    id: "17",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/17" },
    attributes: {
      name: "Access all portfolios (at org)",
      description: "APT",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/17/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/17/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/17/relationships/roles",
          related: "http://localhost/v1/permissions/17/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "5" },
          { type: "roles", id: "7" },
          { type: "roles", id: "11" }
        ]
      }
    }
  },
  {
    id: "18",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/18" },
    attributes: {
      name: "Assign action plans",
      description: "APT",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/18/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/18/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/18/relationships/roles",
          related: "http://localhost/v1/permissions/18/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "5" },
          { type: "roles", id: "7" },
          { type: "roles", id: "11" }
        ]
      }
    }
  },
  {
    id: "19",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/19" },
    attributes: {
      name: "Work on action plans",
      description: "APT",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/19/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/19/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/19/relationships/roles",
          related: "http://localhost/v1/permissions/19/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "5" },
          { type: "roles", id: "7" },
          { type: "roles", id: "11" }
        ]
      }
    }
  },
  {
    id: "20",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/20" },
    attributes: {
      name: "Administer role templates for org",
      description: "Manage Users",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/20/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/20/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/20/relationships/roles",
          related: "http://localhost/v1/permissions/20/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  },
  {
    id: "21",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/21" },
    attributes: {
      name: "Add/edit/delete non org-admin users at org",
      description: "Manage Users",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/21/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/21/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/21/relationships/roles",
          related: "http://localhost/v1/permissions/21/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "6" },
          { type: "roles", id: "7" },
          { type: "roles", id: "12" }
        ]
      }
    }
  },
  {
    id: "22",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/22" },
    attributes: {
      name: "Add/edit/dete ORg Admin users at org",
      description: "Manage Users",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/22/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/22/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/22/relationships/roles",
          related: "http://localhost/v1/permissions/22/roles"
        },
        data: []
      }
    }
  },
  {
    id: "23",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/23" },
    attributes: {
      name: "Administer access patterns at org",
      description: "Manage Users",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/23/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/23/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/23/relationships/roles",
          related: "http://localhost/v1/permissions/23/roles"
        },
        data: [
          { type: "roles", id: "1" },
          { type: "roles", id: "6" },
          { type: "roles", id: "7" },
          { type: "roles", id: "12" }
        ]
      }
    }
  },
  {
    id: "24",
    type: "permissions",
    links: { self: "http://localhost/v1/permissions/24" },
    attributes: {
      name: 'Switch user ("Impersonate" another user)',
      description: "Manage Users",
      "is-active": null
    },
    relationships: {
      "role-permission-list": {
        links: {
          self:
            "http://localhost/v1/permissions/24/relationships/role-permission-list",
          related: "http://localhost/v1/permissions/24/role-permission-list"
        }
      },
      roles: {
        links: {
          self: "http://localhost/v1/permissions/24/relationships/roles",
          related: "http://localhost/v1/permissions/24/roles"
        },
        data: [{ type: "roles", id: "1" }, { type: "roles", id: "7" }]
      }
    }
  }
];

const result = roleTemplate.relationships.permissions.data.map(permission => {
  const permissionData = data.find(element => element.id === permission.id);
  return {
    id: permission.id,
    name: permissionData.attributes.name,
    description: permissionData.attributes.description
  };
});

console.log(result);

Другие вопросы по теме