Aug 14, 2020 07:03 AM
Hi, would anybody know how to pass the second variable (airtableField) in below function? The third variable (shopifyId) is accepted! The purpose is to return just 1 record.
Thanks in advance, Ronald
let shopifyId = '2418417139848'
checkAirtableId('Orders','Order id',shopifyId)
function checkAirtableId(airtableBase,airtableField,shopifyId) {
let recordFound = base(airtableBase).select({
filterByFormula: `${airtableField} = ${shopifyId}`
}).firstPage(function(err,records) {
if(err) {
console.log(err);
return;
}
return records[0]
})
}
Aug 18, 2020 09:29 AM
Hi Ronald,
Thanks for your question!
When using the filterByFormula parameter, you’ll want Airtable field names to be surrounded with curly braces in your formula. Assuming your airtableField variable is a field name, try adding those curly braces like so:
filterByFormula: `{${airtableField}} = ${shopifyId}`
Let me know if that works, or if you’re still having issues!
Aug 25, 2020 05:28 AM
Thank you Erin, that works!
The only thing is…it only works if the shopifyId is a number (within quotation marks…so this is a string after all…), if I change this in a name like ‘ronald’, it doesn’t work anymore (which is unpractical for another application). The ‘Order id’ field is textfield, so this should not matter, right?
Aug 26, 2020 06:32 AM
Let’s take a step back and look at the Airtable formulas that are generated in both cases. When shopifyId is a number, the formula parameter becomes:
filterByFormula: {Order id} = 2418417139848
This formula {Order id} = 2418417139848
is a valid Airtable formula, and will return the value 1
for a record whose Order id field has the value 2418417139848.
If we change the code and set shopifyId to a text value, like this:
let shopifyId = 'ronald'
,
our Airtable formula then becomes {Order id} = ronald
. This is not a valid Airtable formula, since it’s trying to treat “ronald” as a field name (but we don’t have a field named “ronald”), so we get an error. You can test out formulas in the Airtable UI to see how they behave:
In this case, we’ll need to change the formula to have quotes (single or double quotes, doesn’t matter) around the string we are trying to match:
{Order id} = "ronald"
You should be able to add these quotes in your template string like so:
filterByFormula: `{${airtableField}} = "${shopifyId}"`
And the good news is these quotes will work for both text and number strings! You don’t need them with numbers, but having them there won’t hurt.
Aug 31, 2020 01:58 AM
That’s a very clear explanation, thank you very much Erin!