Skip to main content

Hi,

I am new to Airtable and am trying to build a query that will act like a global search across multiple columns.


Our members table has the following columns {‘Full Name’,‘Phone’,‘Email’} that I would like to search.


I want to have a single search field on our site to look up members by either their Full Name, Phone, or Email.


This is the query that I am using, but it doesn’t work, and I have tried many incantations to no avail…


record = await table.select({

filterByFormula: OR(‘Full Name’=searchString, ‘Phone’=searchString, ‘Email’=searchString),

fields: h‘Member’, ‘Full Name’, ‘Phone’, ‘Email’, ‘Status’, ‘Member Photo’]

}).firstPage().then((records) => {

rec = recordsa0](“fields”];

return rec;

}).catch((err)=>{

console.error(err)

});


The above code works great if I use a simple filterByFormula such as:

filterByFormula: 'Member=' + member_id


Thanks in advance for any assistance!!


Mike

I figured this out myself. Here is the filterByFormula JS code I used to make a nested AND inside of an OR in case someone else can find it useful:


//Get the query parameter
var searchString = new String(ctx.query["search"]);//Get the Search Query string
//console.log("ctx.query['search'] =", JSON.stringify(searchString));

//Make an array of the input parameters
var firstLast = searchString.trim().split(" ");
//filterByFormula to search for Full Name, Email, Phone
var filterByFormula = "OR(AND({First Name}='" + firstLast[0] + "', {Last Name}='" + firstLast[1] + "'), {Email}='" + firstLast[0] + "', {Phone}='" + firstLast[0] + "')";

Reply