Node.js: a search engine with autocomplete

Creating a search engine with the autocomplete feature is quite a simple task in Node.js.

We're going to use a Bootstrap plugin on the client side, namely Bootcomplete. This plugin sends via AJAX the search term and expects a JSON array of objects in response.

The default name of the query parameter is query (no pun intended), so we need to use this parameter in our Express route:

'use strict';

// General app settings

const Users = require('./models/Users');'/search', (req, res) => {
  let q = req.body.query;
  let query = {
    "$or": [{"name.first": {"$regex": q, "$options": "i"}}, {"name.last": {"$regex": q, "$options": "i"}}]
  let output = [];

  Users.find(query).limit(6).then( usrs => {
      if(usrs && usrs.length && usrs.length > 0) {
          usrs.forEach(user => {
            let obj = {
                id: + ' ' +,
                label: + ' ' +
  }).catch(err => {


The Mongo's $or operator used with regular expressions allows us to find users based on a match either in their first name or in their last name. Make sure to add the correct indexes to your collection for a faster and more efficient search.

Then our jQuery code will be as follows:

"use strict";

(function( $ ) {
    $(function() {
        $( "#q" ).bootcomplete({
          url: "/search",
          method: "post"

})( jQuery );

Complete code

Node.js: search with autocomplete

Prev Articles Next