1.3.0 • Published 2 years ago

qs2mongo v1.3.0

Weekly downloads
136
License
MIT
Repository
github
Last release
2 years ago

qs2mongo

NPM version

Querystring to mongo mapper

Builds filters, projections and options for mongoose queries

  • In your querystring:
    • attributes=comma,separated,fields maps to projection { comma: 1, separated: 1, fields: 1 }
    • limit=1,offset=2 maps to options { limit: 1, offset: 2 }
    • Sorts
      • Ascending: sort=field maps to options { sort: { field: 1 } }
      • Descending: sort=-field maps to options { sort: { field: -1 } }
    • Any other key maps to a mongo filter. Available options are:
      • strict: key=value is { key: value }
      • not strict: key=value is { key: /value/gi }
      • $or: key,anotherKey=value is $or: [{key:value}, {anotherKey:value}]
      • $in : key__in=a,b,c is key: $in: ["a","b","c"]
      • unary operators: key__gt=value is {key: { $gt: "value"} }

Basic usage

Qs2Mongo = require ("qs2mongo")

#Bind types to mongoose schema
qs2mongo = Qs2Mongo.MongooseSchema YourMongooseSchema, {...otherOptions...}

#Or manually specify types
qs2mongo = Qs2Mongo.ManualSchema {
  filterableBooleans, 
  filterableNumbers,
  filterableDates,
  filterableObjectIds
}, {...otherOptions...}
#... 
anEndpoint: (req, res): =>
  { filters, projection, options } = qs2mongo.parse req

Usage as middleware

Qs2Mongo = require ("qs2mongo")
config = ...
qs2mongo = new Qs2Mongo config
#... 
router.use qs2mongo.middleware

#... 
anEndpoint: (req, res): =>
  { filters, projection, options } = req.mongo

Config

  {
    defaultSort, 
    idField = "id", 
    multigetIdField = "_id", 
    omitableProperties = Qs2Mongo.defaultOmitableProperties
  }

Advanced

Default driver is mongodb. If you'd like to use a custom mongodb driver, you must provide your own type conversion implementation as follows:

{
  toObjectId: (it) -> #your conversion

  toNumber: (it) -> #your conversion

  toBoolean: (it) -> #your conversion

  toDate: (it) -> #your conversion
}

Note: Your conversion must return the properly converted value if it is valid or undefined otherwise.

Specify the path to your implementation in process.env.QS_TRANSFORMER_DRIVER

1.3.0

2 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.0.1

7 years ago