Welcome to the forum Zac!
I have often wondered this myself with regard to attachments because there’s no mention of a natural field order indicator in the API documentation (that I’m aware of).
I’ve also used GraphQL with good results.
Welcome to the forum Zac!
I have often wondered this myself with regard to attachments because there’s no mention of a natural field order indicator in the API documentation (that I’m aware of).
I’ve also used GraphQL with good results.
Thanks! The interesting thing I’ve noticed is that when I change exercises( sort: { order: ASC } )
to exercises( sort: { order: DESC } )
, the order does change.
Original order in airtable:
A
B
C
D
E
Order with sort: { order: ASC }
:
A
B
E
C
D
Order with sort: { order: DESC }
:
D
C
E
B
A
You can see that it’s almost respecting the ordering, but the last element E
is appearing in the middle of the pack. I tried removing them all and adding new records in the right order, that also didn’t behave as expected. Maybe a bug?
Thanks! The interesting thing I’ve noticed is that when I change exercises( sort: { order: ASC } )
to exercises( sort: { order: DESC } )
, the order does change.
Original order in airtable:
A
B
C
D
E
Order with sort: { order: ASC }
:
A
B
E
C
D
Order with sort: { order: DESC }
:
D
C
E
B
A
You can see that it’s almost respecting the ordering, but the last element E
is appearing in the middle of the pack. I tried removing them all and adding new records in the right order, that also didn’t behave as expected. Maybe a bug?
When adding them a second time did they resume the same order as before when they sorted ASC and DESC with repeatable, if not unexpected, orderings?
If they did, then I would be inclined to say that there’s some attribute, or a part of an attribute in the array, that’s used to determine sort order. I wonder if attachment collections behave this way as well.
I would love to hear @EvanHahn’s take on this. If we understood the sort mechanism for we would at least have a chance to engineer the content to fit the behavior.
When adding them a second time did they resume the same order as before when they sorted ASC and DESC with repeatable, if not unexpected, orderings?
If they did, then I would be inclined to say that there’s some attribute, or a part of an attribute in the array, that’s used to determine sort order. I wonder if attachment collections behave this way as well.
I would love to hear @EvanHahn’s take on this. If we understood the sort mechanism for we would at least have a chance to engineer the content to fit the behavior.
Ahhh, your reply got me thinking since the behavior has been random. I ran a test and think it’s automatically sorting by id alphabetically. I created 5 brand new records to and spit out the entire object. While the order was yet again different, the IDs are shown alphabetically.
`
// ASC
{ “Id”: “Rec2yzMMT4k6tazdL”, “Name”: “B”, “Description”: “” }
{ “Id”: “Rec8loxSYHEf9Bel6”, “Name”: “D”, “Description”: “” }
{ “Id”: “Recq3S0bCbfdsmVoP”, “Name”: “C”, “Description”: “” }
{ “Id”: “RecwwoGcKacsAMYTP”, “Name”: “A”, “Description”: “” }
{ “Id”: “ReczZ5fz6DM9ZclI8”, “Name”: “E”, “Description”: “” }
// DESC
{ “Id”: “ReczZ5fz6DM9ZclI8”, “Name”: “E”, “Description”: “” }
{ “Id”: “RecwwoGcKacsAMYTP”, “Name”: “A”, “Description”: “” }
{ “Id”: “Recq3S0bCbfdsmVoP”, “Name”: “C”, “Description”: “” }
{ “Id”: “Rec8loxSYHEf9Bel6”, “Name”: “D”, “Description”: “” }
{ “Id”: “Rec2yzMMT4k6tazdL”, “Name”: “B”, “Description”: “” }
`
So I guess the question becomes — is there a way to access whatever data is available that airtable itself uses to persist record order in the UI?
Okay, I think I figured it out. Posting here for posterity — not sure if this will solve your problem or not, @Bill.French.
The default ordering of the records in the array that is returned on a linked record field correctly matches what is in the airtable UI, as long as you don’t pass any graphql sorting arguments. Because my initial goal was to reverse the order from airtable, I tried changing the sort method to DESC, which implicitly sorted on the id field. By removing the sorting entirely, it works as expected:
exercises {
id
name
path
}
Now I just have to sort manually within airtable, which is a pain but not the end of the world.
Okay, I think I figured it out. Posting here for posterity — not sure if this will solve your problem or not, @Bill.French.
The default ordering of the records in the array that is returned on a linked record field correctly matches what is in the airtable UI, as long as you don’t pass any graphql sorting arguments. Because my initial goal was to reverse the order from airtable, I tried changing the sort method to DESC, which implicitly sorted on the id field. By removing the sorting entirely, it works as expected:
exercises {
id
name
path
}
Now I just have to sort manually within airtable, which is a pain but not the end of the world.
Ha! That’s what I guessed. So, does this mean that if you use the API to sort a result set, it causes Airtable to permanently remove the manual sort order from that moment forward? Or, is the natural order sustained despite sorted API requests?
Possible Solution?
Design your queries to always use the natural (UI-based) order. Take the result set and make a snapshot array while adding an index key attribute. Then sort on the new key descending. That would give you the exact opposite of the UI-based order.