Socket
Socket
Sign inDemoInstall

algolia-search-builder

Package Overview
Dependencies
0
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    algolia-search-builder

A query parser for algolia filters


Version published
Weekly downloads
2.7K
increased by21.8%
Maintainers
1
Install size
51.0 kB
Created
Weekly downloads
 

Changelog

Source

1.1.2 (2022-03-24)

Bug Fixes
  • in.js: fix IN operator use OR instead of AND (0b782ef6)

Readme

Source

Algolia Filters Query Builder

A parser for having a structured way for querying algolia similar to well known ODMs or ORMS.

Installation

npm i algolia-search-builder

Motivation

Currently Algolia supports string format only for filtering the search results, which doesn't seem very functional for making complex dynamic queries (probably by string concatenation), which requires you to memorize the built in algolia operators. Using the algolia query builder making dynamic filter queries is easier and similar to sequelize and mongoose.

Usage

const algoliaQueryBuilder = new AlgoliaQueryBuilder({
   x:{lt:3, gte:1},
   y:{between:[1,2]} 
});

const filterQuery = algoliaQueryBuilder.exec(); // 'x < 3 AND x >= 1 AND y: 1 TO 2'

const results = algoliaIndex.search("str",{
    filters: filterQuery
});

Operators

  • Numeric

    Operators used with numeric values only
    • eq

      Checks if a field equals to the given value

    { x: { eq: 3 } }
    
    • ne

      Checks if a field is not equal to the given value

    { x: { ne: 3 } }
    
    • gt
    Checks if a field is greater than the given value
    { x: { gt: 3 } }
    
    • gte
    Checks if a field is greater than or equal the given value
    { x: { gt: 3 } }
    
    • lt
    Checks if a field is less than the given value
    { x: { lt: 3 } }
    
    • lte
    Checks if a field is less than or equal the given value
    { x: { lt: 3 } }
    
    • between
    Checks if a field is between the two given values (inclusive)
    { x: { between: [1,2] } }
    
    • in
    Checks if a field is in the array of given values (can contain strings or number)
    { x: { in: [1,2,3] } }
    
  • Logical

    • not
    Negates the given query
    { x: { not: { between:[ 1 , 2] } } }
    
    • or
    returns results that satisfy at least one of the given conditions
    { or:
     [
        { x: { eq:1 } }, 
        { y: { eq:2 } }, 
     ]
    }
    
    • and
    returns results that satisfy at all of the given conditions
    { and:
     [
        { x: { eq:1 } }, 
        { y: { eq:2 } }, 
     ]
    }
    

Advanced Usage Examples

 // Field don't have to use operators they can be equal to a value right away
 const algoliaQueryBuilder1 = new AlgoliaQueryBuilder({ x:3, y: "str" });

 // An and can contain an or 
 const algoliaQueryBuilder2 = new AlgoliaQueryBuilder({
     and:[
         {x:3},
         {or:[{y:4},{z:5}]}
     ]
 });

 // By default all the provided field queries are anded
  const algoliaQueryBuilder2 = new AlgoliaQueryBuilder({
      x:{
          gt:3,
          lt:6
      }
  }); // Return results with x greater than 3 and less than 6

General Notes

  • The query builder validates the query after parsing and before returning the query string the limitations and constraints of the query builder are mostly related to the limitations given by algolia

  • To use _tags for filtering just add the a custom field with name _tags and pass it the value

    {_tags:"published"}
    

Keywords

FAQs

Last updated on 24 Mar 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc