Nov 24, 2020 08:38 AM
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,
Dec 01, 2020 07:11 AM
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!