feathers-graphql-mongoose
⚡️ A Feathers, GraphQL and Mongoose Integration. Usage Example: https://github.com/hookcompany/feathers-graphql-boilerplate
Installation
Install with npm
$ npm install --save feathers-graphql-mongoose
Install with Yarn
$ yarn add feathers-graphql-mongoose
Usage Example Project
https://github.com/hookcompany/feathers-graphql-boilerplate
Playground
PATH: /<basePath>/playground
GraphiQL
PATH: /<basePath>/graphiql
Voyager
PATH: /<basePath>/schema/[queries|mutations|subscriptions]
Querying
Support
Filter
eq
gt && gte
lt && lte
in
ne && nen
exists && not
mod
regex
options
size
Sort
sort: ["name:desc", "createdAt:asc"]
sort: "name:desc createdAt:asc"
sort: { name: "desc", createdAt: "asc" }
Limit: Int
Skip: Int
Example
Example - Populate
Subscriptions
Default
create[Service]
update[Service]
remove[Service]
Example
Usage
# services/app1/users/types.gqlinput UserFilter { id: Any name: Any birth: Any tags: Any createdAt: Any updatedAt: Any} input NewUserData { name: String! birth: Date! tags: [String]} input EditUserData { name: String birth: Date tags: [String]} input UserUpdateData { set: EditUserData push: [Any!] pull: [Any!]} type UserQuery @query { users(query: UserFilter, sort: Any, limit: Int, skip: Int): [User] @find user(id: ID, query: UserFilter): User @get} type UserMutation @mutation { createUser(data: NewUserData!): User @create createUsers(data: [NewUserData!]!, sort: Any): [User] @create updateUser(id: ID, query: UserFilter, data: UserUpdateData!): User @update updateUsers(id: ID, query: UserFilter, data: UserUpdateData!, sort: Any): [User] @update patchUser(id: ID, query: UserFilter, data: EditUserData!): User @patch patchUsers(id: ID, query: UserFilter, data: EditUserData!, sort: Any): [User] @patch removeUser(id: ID, query: UserFilter): User @remove removeUsers(id: ID, query: UserFilter, sort: Any): [User] @remove} type UserSubscription @subscription { createUser: [User] @create updateUser: [User] @update patchUser: [User] @patch removeUser: [User] @remove}
// services/app1/users/index.js;; const User = types hooks modelName: 'User' path: '/users' filters: { console; return true; } { console; return true; } { console; return true; } ; ;
// services/app1/index.js;;; basePath: '/app1' services: User Category Product;
// services/index.js;;;; context platformapp1 platformapp2 ;;
Configuration
; mongoose; mongoosePromise = globalPromise; context; // This line is mandatory.;
TODO
-
Queries
- Mongo Operators
- Sort
- Limit && Skip
- Populate && DeepPopulate
-
Mutations
-
Subscriptions
-
Mapping Types to Schema
-
Mapping Service
-
Playground
-
Graphiql
-
Voyager
-
Query Adapter Feathers
-
Memory
-
Nedb
-
Mongodb
-
Mongoose
-
Knex
-
Sequelize
-
Elasticsearch
-
Rethinkdb
-