I am trying to filter a list by multiple different columns, and then when I add the array filter towards the end, it tells me that the query is not valid. I have tried two different methods which are listed in the Verified Answer to the post below:
Reference: How to use array in rest API for getting items based on array values
I want to filter the response to only show specific users names.
Here is what I tried:
Method 1:
const filterStartDate = new Date('2022-01-01');
const formatFilterStartDate = moment(filterStartDate).format('YYYY-MM-DD');
const approvalStat = "Approved";
const teamEmps= ["Emp 1", "Emp 2", "Emp 3", "Emp 4"];
var filters = teamEmps.map(function(emp){
return 'EmployeeName/Title eq ' + emp;
});
/items?$select=EmployeeName,ID,StartDate,EndDate,LeavePurpose,Title,Status&$expand=EmployeeName/Title&$filter=StartDate ge '" + formatFilterStartDate + "'and Status eq 'HR Approved' and '" + filters.join(' or ') + "'"
Method 2:
const filterStartDate = new Date('2022-01-01');
const formatFilterStartDate = moment(filterStartDate).format('YYYY-MM-DD');
const approvalStat = "Approved";
const teamEmps= ["Emp 1", "Emp 2", "Emp 3", "Emp 4"];
function getFilter(teamEmps) {
var nameFilter = "EmployeeName/Title eq ";
var filter = "";
for (var i = 0; i < teamEmps.length; i++) {
if (i == teamEmps.length - 1) {
filter += nameFilter + teamEmps[i];
} else {
filter += nameFilter + teamEmps[i] + " or ";
}
}
return filter;
}
var filterByName = getFilter(teamEmps);
/items?$select=EmployeeName/Title,ID,StartDate,EndDate,LeavePurpose,Title,Status&$expand=EmployeeName&$filter=StartDate ge '" + formatFilterStartDate + "'and Status eq 'HR Approved' and '" + filterByName + "'"