Code to retrieve and display connected records

object_1 contains 2 fields, field_1 and field_2; they contain first name and last name. object_2 contains 2 fields, field_8 which is a connection to object_1 (field_1), and field_3 which contains freetext:

object_1 could contain "MICKEY" "MOUSE",

object_2 could contain "MICKEY" "is a mouse" - with MICKEY being the connecting record.

The below code retrieves all records from object_1 and object_2 using an Ajax GET. It then determines if the connecting record ID is identical to the connected record ID (if (notes.records[x].field_8_raw[0].id==names.records[y].id)) and if so displays the last name from object_1.

So the code's output would be "MICKEY" "MOUSE" "is a mouse" with MOUSE retrieved by matching the connecting record ID with the connected record ID.

The connecting record ID can be found through records[x].field_8_raw[0].id as documented elsewhere on this forum; this can then be used to find the connected record.

I used an async GET to make sure the first GET would finish before the 2nd GET would start.

cheers

Bart

// Show first name and note, and retrieve the last name from the connected record
$(document).on('knack-view-render.view_4', function (event, view, data) {
// Add a button to execute the action
$("#view_4").prepend("<button id='shownotesandnames'>Show Notes and Names</button>");

// Add the function to the button
document.getElementById('shownotesandnames').addEventListener('click', function () {
  
	$.ajax({
 		url: 		"https://api.knackhq.com/v1/objects/object_2/records",
      	cache:		false,
      	async:		false,
	    type: 		"GET",
	    headers: 	{"X-Knack-Application-Id"	: "YOUR APP ID HERE", 
                  	"X-Knack-REST-API-Key"		: "API KEY HERE"
                    },
		success: 	function(notes) 
			{ 
        
          	$.ajax({
				url: 		"https://api.knackhq.com/v1/objects/object_1/records",
      			cache:		false,
          		async:		false,
	    		type: 		"GET",
	    		headers: 	{"X-Knack-Application-Id"	: "YOUR APP ID HERE", 
               			 	"X-Knack-REST-API-Key"		: "API KEY HERE"
               				},
			success: 	function(names) 
				{
                document.write("<p> *** Now matching records *** </p>");
                  
                // Loop through the notes and names to see if a connectionID from notes matches a name ID. 
                // If so, print the first name from notes table, the surname from names table, and note from notes table.
                  for (var x=0; x<notes.records.length; x++) {
                    for (var y=0; y<names.records.length; y++) 
                    {
                      if (notes.records[x].field_8_raw[0].id==names.records[y].id)
                        document.write("<p>" + notes.records[x].field_8 + " " + names.records[y].field_2 + " " + notes.records[x].field_3 + "</p>");
                  	} // for y       
                 } // for x        
                  
                 document.write("<p> *** DONE *** </p>");
                          
				},  //  success
                  
			error: 		function(xhr)
				{
					sweetAlert("An error occured! Status: " + xhr.status + " " + xhr.statusText);
				} 
                  
			}); //  inner ajax  */                 
              
          
        	}, //  outer success
	    
      	error: 		function(xhr)
		{
          	sweetAlert("An error occured! Status: " + xhr.status + " " + xhr.statusText);
    	} 
      
        }); // outer ajax

});

});


Thanks for the code. I'm trying to get this to work, but having issues. I am wondering if it's because I'm trying to compare connected object records?

I have two tables: Products and Line Items.

Each line item connects to a product via a record connection. I'm trying to pull matching records from both tables, like in the example you listed above.

The only output I get is:

*** Now matching records ***

*** DONE ***

Any thoughts as to why this isn't working?