
Security News
Official Go SDK for MCP in Development, Stable Release Expected in August
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.
graphql-compose-connection-mongo
Advanced tools
Plugin for `graphql-compose` which provide a connection resolver for types.
This is a plugin for graphql-compose family, which adds to the TypeComposer connection
resolver.
Live demo: https://graphql-compose.herokuapp.com/
This package completely follows to Relay Cursor Connections Specification (https://facebook.github.io/relay/graphql/connections.htm).
Besides standard connection arguments first
, last
, before
and after
, also added significant arguments:
filter
arg - for filtering recordssort
arg - for sorting records. Build in mechanism allows sort by any unique indexes (not only by id). Also supported compound sorting (by several fields).npm install graphql graphql-compose graphql-compose-connection --save
Modules graphql
and graphql-compose
are in peerDependencies
, so should be installed explicitly in your app. They should not installed as submodules, cause internally checks the classes instances.
import composeWithConnection from 'graphql-compose-connection';
import userTypeComposer from './user.js';
composeWithConnection(userTypeComposer, {
findResolverName: 'findMany',
countResolverName: 'count',
sort: {
// Sorting key, visible for users in GraphQL Schema
_ID_ASC: {
// Sorting value for ORM/Driver
value: { _id: 1 },
// Field names in record, which data will be packed in `cursor`
// edges {
// cursor <- base64(cursorData), for this example `cursorData` = { _id: 334ae453 }
// node <- record from DB
// }
// By this fields MUST be created UNIQUE index in database!
cursorFields: ['_id'],
// If for connection query provided `before` argument with above `cursor`.
// We should construct (`rawQuery`) which will be point to dataset before cursor.
// Unpacked data from `cursor` will be available in (`cursorData`) argument.
// PS. All other filter options provided via GraphQL query will be added automatically.
// ----- [record] ----- sorted dataset, according to above option with `value` name
// ^^^^^ `rawQuery` should filter this set
beforeCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery._id) rawQuery._id = {};
rawQuery._id.$lt = cursorData._id;
},
// Constructing `rawQuery` for connection `after` argument.
// ----- [record] ----- sorted dataset
// ^^^^^ `rawQuery` should filter this set
afterCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery._id) rawQuery._id = {};
rawQuery._id.$gt = cursorData._id;
},
},
_ID_DESC: {
value: { _id: -1 },
cursorFields: ['_id'],
beforeCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery._id) rawQuery._id = {};
rawQuery._id.$gt = cursorData._id;
},
afterCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery._id) rawQuery._id = {};
rawQuery._id.$lt = cursorData._id;
},
},
// More complex sorting parameter with 2 fields
AGE_ID_ASC: {
value: { age: 1, _id: -1 },
// By these fields MUST be created COMPOUND UNIQUE index in database!
cursorFields: ['age', '_id'],
beforeCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery.age) rawQuery.age = {};
if (!rawQuery._id) rawQuery._id = {};
rawQuery.age.$lt = cursorData.age;
rawQuery._id.$gt = cursorData._id;
},
afterCursorQuery: (rawQuery, cursorData, resolveParams) => {
if (!rawQuery.age) rawQuery.age = {};
if (!rawQuery._id) rawQuery._id = {};
rawQuery.age.$gt = cursorData.age;
rawQuery._id.$lt = cursorData._id;
},
}
},
});
Types should have following resolvers:
count
- for counting recordsfindMany
- for filtering records. Also required that this resolver supports search with operators (lt, gt), which used in directionFilter
option. Resolver findMany
should have filter
argument, which will be copied to connection. Also should have limit
and skip
args.graphql-compose-mongoose - converts mongoose models to graphql types
FAQs
Plugin for `graphql-compose` which provide a connection resolver for types.
The npm package graphql-compose-connection-mongo receives a total of 5 weekly downloads. As such, graphql-compose-connection-mongo popularity was classified as not popular.
We found that graphql-compose-connection-mongo demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
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.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.
Security News
New research reveals that LLMs often fake understanding, passing benchmarks but failing to apply concepts or stay internally consistent.
Security News
Django has updated its security policies to reject AI-generated vulnerability reports that include fabricated or unverifiable content.