ProductPromotion
Logo

React.JS

made by https://0x3d.site

GitHub - heysailor/relay-mongodb-connection: Create Relay connections from MongoDB cursors
Create Relay connections from MongoDB cursors. Contribute to heysailor/relay-mongodb-connection development by creating an account on GitHub.
Visit Site

GitHub - heysailor/relay-mongodb-connection: Create Relay connections from MongoDB cursors

GitHub - heysailor/relay-mongodb-connection: Create Relay connections from MongoDB cursors

relay-mongodb-connection Build Status Coverage Status

Like connectionFromArray() but for MongoDB cursors

Install

npm install --save relay-mongodb-connection

Usage

Give it a cursor from mongodb, and it handles pagination int he same way graphql-relay does for arrays.

import connectionFromMongoCursor from 'relay-mongodb-connection';

Also supports mongoose's querys and aggregations.

import { connectionFromMongooseQuery } from 'relay-mongodb-connection';
import { connectionFromMongooseAggregate } from 'relay-mongodb-connection';

At a glance

Pass it a MongoDB cursor and connectionArgs, and it's happy.

resolve(obj, { ...args }) {
  return connectionFromMongoCursor(
    db.collection('users').find({}),
    args
  );
}

Optionally give it a mapper function:

resolve(obj, { ...args }) {
  return connectionFromMongoCursor(
    db.collection('users').find({}),
    args,
    (user) => Object.assign(user, { id: user._id })
  );
}

And for Mongoose users:

resolve(obj, { ...args }) {
  return connectionFromMongooseQuery(
    User.find({}),  // User.aggregate() also works
    args,
    (user) => Object.assign(user, { id: user._id })
  );
}

Example

// ...
import connectionFromMongoCursor from 'relay-mongodb-connection';
// ...

// Instead of resolving, synchronously returns a MongoDB Cursor.
function getSpaceshipsForUser(userId) {
  return db.collection('spaceships').find({
    user: new ObjectId(userId)
  });
}

export const GraphQLUser = new GraphQLObjectType({
  name: 'User',
  fields: {
    id: globalIdField('User'),
    spaceships: {
      type: SpaceshipConnection,
      args: {
        ...connectionArgs,
      },
      resolve(user, { ...args }) {
        const spaceshipCursor = getSpaceshipsForUser(user._id);
        return connectionFromMongoCursor(spaceshipCursor, args);
      }
    }
  }
});

connectionFromMongoCursor automatically skips and limits the MongoDB Cursor so that only the necessary documents are retrieved from the database.

Changelog

See CHANGELOG.md

Testing

MONGO_URL=mongodb://192.168.99.100/mongodbconnection npm test

License

MIT ยฉ Mikael Berg

More Resources
to explore the angular.

mail [email protected] to add your project or resources here ๐Ÿ”ฅ.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here ๐Ÿ”.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory