How to get displayName of project role actor

Hi
I am trying to get a list of actors for project roles. But I’m stuck on getting the displayName for the actors list in the role JSON.

My function is as below but in the console log I am only seeing “0”, “1” etc for the actor element.
Some JS function I need perhaps - is it the object handling?

Tom

function:

const fetchRoles = async function(projectKey) {
  
  const response = await api.asUser().requestJira(route`/rest/api/3/role`, {
        headers: {
          'Accept': 'application/json'
        }
      });

  console.log(`Response: ${response.status} ${response.statusText}`);
  const data = await response.json();
  let roles = [];
  for (const role of data ) {
    console.log(`Role: ${role.name} Id: ${role.id}`) // Self: ${role.self}`)
    const response2 = await api.asApp().requestJira(route`/rest/api/3/project/${projectKey}/role/${role.id}`);
    const data2 = await response2.json();
    if (response2.status == 200 && data2.actors.length > 0) {
      console.log(`Response2: ${response2.status} ${response2.statusText}`);
      let actorNames = [];
      //let actorList = data2.actors
      console.log(`actorList : ${data2.actors}`)
      console.log(`actorList JSON: ${JSON.stringify(data2.actors)}`)
      for (const actor in data2.actors) {
        console.log(`actor: ${data2.actors.length } ${actor} ${JSON.stringify(actor)}`)
        actorNames.push({
              "displayName": actor.displayName
            })
        }
        roles.push({
          "rolename": data2.name,
          "roleid": data2.id,
          "actors": actorNames
        })
      }
    
    }
    return roles;
  }

console:
INFO 12:14:24.832 169fc492d498e21c Role: Administrators Id: 10002

INFO 12:14:25.156 169fc492d498e21c Response2: 200 OK

INFO 12:14:25.157 169fc492d498e21c actorList : [object Object],[object Object]

INFO 12:14:25.157 169fc492d498e21c actorList JSON: [{"id":10030,"displayName":"jira-admins-tom-lister-dev","type":"atlassian-group-role-actor","name":"jira-admins-tom-lister-dev","actorGroup":{"name":"jira-admins-tom-lister-dev","displayName":"jira-admins-tom-lister-dev"}},{"id":10031,"displayName":"Tom Lister","type":"atlassian-user-role-actor","actorUser":{"accountId":"557058:ebde908e-e998-4fcb-8c8d-7d0076732fa4"}}]

INFO 12:14:25.158 169fc492d498e21c actor: 2 0 "0"

INFO 12:14:25.158 169fc492d498e21c actor: 2 1 "1"

Hi @listertuk
Thank you for reaching out. Yes it is an issue with object handling. Try with below approach. It should work.

data2.actors.forEach(actor => {
         console.log(JSON.stringify(actor));
         console.log(`actor: ${data2.actors.length } ${actor} ${JSON.stringify(actor)}`)
        actorNames.push({
              "displayName": actor.displayName
             
            });
            console.log(`displayName : ${actor.displayName}`)
        });
        roles.push({
          "rolename": data2.name,
          "roleid": data2.id,
          "actors": actorNames
        })
      };
1 Like

Thanks @LashaniPerera
Thats done the trick!

1 Like