Skip to content
Advertisement

How to build a search bar using nodejs and sql as the database?

I have created a database using SQL and I have a functional web page built on Angular and nodejs which is connected to the database. I need to make the search bar functional. How should I proceed?

Advertisement

Answer

Create a input box in html with keyup event as :

<input (keyup)="searchData($event)" type="text" class="form-control" placeholder="Search"
          aria-label="Searchbox" aria-describedby="basic-addon1">

Add this function in your .ts file which will be triggered on keyup in search box :

searchData(event) {
    this.search = event.target.value
    console.log(this.search)
    console.log(this.filter)
    this.empService.searchData(this.search).subscribe((res) => {
      console.log("Filter Response", res);
      if (res) {
        this.employees = res
        if (res.length === 0) {
          this.noData = true
        } else {
          this.noData = false
        }
      }
    },
      (err) => {
        console.log(err);
        console.log("error")
      })
  }

Create a service to call your api in node :

searchData(data): Observable<any> {
    return this.http.get(environment.serverUrl + 'searchData?search=' + data).pipe(

      catchError((error: HttpErrorResponse) => throwError(error))
    )
  }

Write a api in node as :

let searchData = (req, res) => {
    search = req.query.search
    console.log(search)
    var searchEmployees = `SELECT * FROM employees WHERE (employeeNo LIKE '%${search}%' OR name LIKE '%${search}%' OR email LIKE '%${search}%' OR contact LIKE '%${search}%') AND isDeleted='0' `
    //searchValues = [search,search,search,search]
    console.log(searchEmployees)
    db.query(searchEmployees, function (errQuery, resQuery) {
        if (errQuery) {
            res.send(errQuery)
        } else {
            res.send(resQuery)
        }
    })
}

Edit sql query as per your table structure and name.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement