Push all table field data into JavaScript array

xiaix
Tera Guru

Here's an example:

function get_BCP_Site_Data(userLocation_sysID)

{

      var siteDATA = [];

      var gr = new GlideRecord('u_bcpa_sites');

      gr.addQuery('u_active', true);

      gr.addQuery('u_location', userLocation_sysID);

      gr.query();

      if (gr.next())

      {

              siteDATA.push({

                      city:gr.u_city.toString(),

                      state:gr.u_state.toString(),

                      zip:gr.u_zip.toString()

              });

      }

      return siteDATA;

}

Above, I'm only exampling 3 fileds, city, state and zip.   However, I have about 75 more I need data from.

Is there any way to get all the fields without explicitly referencing each field?

1 ACCEPTED SOLUTION

Or... here's the ES5 way to do it to get dynamic array keys:



function get_BCP_Site_Data(userLocation_sysID)


{


      var siteDATA = [];


      var gr = new GlideRecord('u_bcpa_sites');


      gr.addQuery('u_active', true);


      gr.addQuery('u_location', userLocation_sysID);


      gr.query();


      if (gr.next())


      {


              var fields = new GlideRecordUtil().getFields(gr);


              var fieldName = '';        


              for (var i = 0; i < fields.length; i++)


              {


                      var obj = {};


                      fieldName = fields[i];


                      var thetop = fieldName;


                      obj[fieldName] = gr.getDisplayValue(fieldName);


                      siteDATA.push(obj);


              }


      }


      return siteDATA;


}




find_real_file.png


View solution in original post

7 REPLIES 7

karthikaanbazag
ServiceNow Employee
ServiceNow Employee

Hi David,



You can try the below code and see if it works..




function get_BCP_Site_Data(userLocation_sysID)  


{  


var siteDATA = [];  


var gr = new GlideRecord('u_bcpa_sites');  


gr.addQuery('u_active', true);  


gr.addQuery('u_location', userLocation_sysID);  


gr.query();  


while(gr.next())  


{  


siteDATA.push(gr.getValue("sys_id"));  


}  


return siteDATA;  


}  


Not really understanding how getting the sys_id field gives me all the fields....



find_real_file.png


find_real_file.png



gr.getValue('sys_id') does just that, it gets me the sys_id.     That's not what I need.


xiaix
Tera Guru

Got it.



function get_BCP_Site_Data(userLocation_sysID)


{


      var siteDATA = [];


      var gr = new GlideRecord('u_bcpa_sites');


      gr.addQuery('u_active', true);


      gr.addQuery('u_location', userLocation_sysID);


      gr.query();


      if (gr.next())


      {


              var fields = new GlideRecordUtil().getFields(gr);


              var fieldName = '';


              for (var i = 0; i < fields.length; i++)


              {


                      fieldName = fields[i];


                      siteDATA.push({


                              field_name: fieldName,


                              value: gr.getDisplayValue(fieldName),


                              label: gr[fieldName].getLabel()


                      });


              }


      }


      return siteDATA;


}



find_real_file.png


Great!!!!