Help

Airtable apps Javascript selecting linked records not working

Topic Labels: Custom Extensions
968 1
cancel
Showing results for 
Search instead for 
Did you mean: 
Othman_Daid
4 - Data Explorer
4 - Data Explorer

Hello,

I’m developing an Airtable App and I want to access to linked records of a given record.
When looking into the API doc the only way documented is using useRecords like following:

    const linkedTable = base.getTableByName("table1");
    const linkedRecords = useRecords(
    record.selectLinkedRecordsFromCell("table1", {
       // Keep the linked records sorted by their primary field.
       sorts: [{ field: linkedTable.primaryField, direction: "asc" }],
       })
    );

the issue is that I’m trying to do some logic in a non React coponent in a “Service” class, so I can’t use useRecords…

In the API docs they are talking about loading data, I tried loading data manually like so:

const table1QueryResult = await table1.selectRecords();
await table1QueryResult.loadDataAsync();
recordToMatch.selectLinkedRecordsFromCell("table1")

but I always get an error:
Error: LinkedRecordsQueryResult data is not loaded at LinkedRecordsQueryResult.get

Thank you,

1 Reply 1
somehats
6 - Interface Innovator
6 - Interface Innovator

Hey @Othman_Daid,

I think you’re seeing this error because you haven’t loaded the query result from your selectLinkedRecordsFromCell call.

You can use selectRecordsAsync and selectLinkedRecordsFromCellAsync to query your data and automatically load it:

Imagine you have a projects table, with a linked record field containing records from a tasks table. You could access the linked records like this:

// query projects and find a project record:
const projectsQuery = await projectsTable.selectRecordsAsync();
const projectRecord = projectsQuery.records[0];

// query all the tasks within that project record:
const linkedTasksQuery = await projectRecord.selectLinkedRecordsFromCellAsync("Tasks");

// do something with that data:
console.log(`The ${projectRecord.name} project has these tasks:`, linkedTasksQuery.records);

// when you're done, remember to unload your data:
linkedTasksQuery.unloadData();
projectsQuery.unloadData();

Let me know if you have any followup questions!