1.1.4 • Published 6 years ago

gql-mongo v1.1.4

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

What is gql-mongo

gql-mongo is a simple converter which converts your graphql query to mongodb query

Get Started

let define your simple query:

  input UserFilter {
    id: ID
    username: String
    age: Integer
    age_gt: Integer
    age_lt: Integer
  }
  type Query {
    // search for users in your mongodb database
    users: (filter: UserFilter!, sortBy: UserSortBy!, limit: Integer!, skip: Integer!): UserConnection!
  }

GqlMongo converts your filter query to

  {
    $and: [
      { id: { $eq: <value> } },
      { username: { $eq: <value> }},
      { age: {$eq: <value>} },
      { age: {$gt: <value>} },
      { age: {$lt: <value>} }
    ]
  }

check MetaFilter of https://www.graph.cool/docs/reference/graphql-api/query-api-nia9nushae for standard filter.

Support operators

$eq, $gt, $gte, $in, $lt, $lte, $ne, $nin, $regex,

Usage

Use in your resolver users.js

import { GqlMongo } from 'qgl-mongo'
const gqlMongo = new GqlMongo()

export default ({_, { filter = {}, orderBy, skip, limit }, { Users }}) => {
  const query = gqlMongo.parseQuery(filter);
  const users = Users.find(query);
  // handle skip limit
}

Custom query

for exmaple, you want to search username which starts with taind. Firstly, adding new field to query

  input UserFilter {
    id: ID
    username: String
    username_starts_with: String
    age: Integer
    age_gt: Integer
    age_lt: Integer
  }

then in resolver users.js

import { GqlMongo } from 'qgl-mongo'
const gqlMongo = new GqlMongo({
  $starts_with: val => ({$regex: new RegExp(`^${val}`, 'gi')})
})

Additional Features

GqlMongo generate query fields:

import { GqlField } from 'gql-mongo'
const gqlField = new GqlField()
const r = gqlField.parse({ age: 'Int'}).toFilterString()
// { age: 'Int', age_ne: 'Int', age_in: '[Int!]', age_nin: '[Int!]', age_lt: 'Int', age_lte: 'Int', age_gt: 'Int', age_gte: 'Int' }
1.1.4

6 years ago

1.1.2

6 years ago

1.1.0

6 years ago

1.0.8

6 years ago

1.0.6

6 years ago

1.0.4

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago