Skip to content

Instantly share code, notes, and snippets.

@navanathjadhav
Created December 26, 2020 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save navanathjadhav/c916cf522be1a49499779f02afa33dc3 to your computer and use it in GitHub Desktop.
Save navanathjadhav/c916cf522be1a49499779f02afa33dc3 to your computer and use it in GitHub Desktop.
6. Filter students by search term
/*
* Get students with query params: [pageNumber, recordsPerPage & searchTerm]
*/
app.get("/api/students", (req, res) => {
let studentInternal = students;
// Calculate start, Aka skip if you use it in db queries
const start =
parseInt(req.query.recordsPerPage) * (parseInt(req.query.pageNumber) - 1);
// Calculate end, Aka limit if you use it in db queries
const end = start + parseInt(req.query.recordsPerPage);
// Match if searchTerm is received from client
// Use your DB query here
if (req.query.searchTerm) {
studentInternal = students.filter((student) => {
return (
student.name.match(new RegExp(req.query.searchTerm, "i")) ||
student.email.match(new RegExp(req.query.searchTerm, "i")) ||
student.department.match(new RegExp(req.query.searchTerm, "i"))
);
});
}
// Artificial delay for showing loader in client
setTimeout(() => {
// Send response: { count, data }
res.status(200).json({
count: studentInternal.length,
data: studentInternal.slice(start, end),
});
}, 1000);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment