Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including fast-relay-pagination with all npm packages installed. Try it out:

var fastRelayPagination = require("fast-relay-pagination")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

fast-relay-pagination v2.0.2

Improve relay pagination performance with find and limit

Fast Relay Pagination

Fast-relay-pagination is a library to improve graphql-relay lazy loading by using mongoose or mongodb find and limit. As you definitely know, graphql-relay's connectionFromArray fetchs all data and perform slicing on data which is not efficient for large amount of data fetched from mongodb.



$ npm install -g fast-relay-pagination


The only effort you need, is using fetchConnectionFromArray method from library.

import {
} from 'fast-relay-pagination'
export default{
  type: orderConnection.connectionType,
  args: {
    orderFieldName: {
      type: GraphQLString,
    sortType: {
      type: GraphQLInt,
  resolve: needAdmin(async (_, args) => {
    let orderFieldName = args.orderFieldName || '_id'
    let sortType = args.sortType || -1
    let after = args.after
    let before = args.before
    let filter = args.filter
    let first = args.first
    let last = args.last
    return fetchConnectionFromArray({
      dataPromiseFunc: SampleModel.find.bind(SampleModel), // required
      filter, // optional (for using filter on model collection) - for example => {username: 'test'} 
      after, //optiona
      before, // optional
      first, //optional
      last, // optional
      orderFieldName, // optional
      sortType, // optional

Production Notes
  • This library currently is only supporting mongodb and mongoose


Want to contribute? Great!

  • Fork the repo on GitHub
  • Clone the project to your own machine
  • Commit changes to your own branch
  • Push your work back up to your fork
  • Submit a Pull request so that we can review your changes

Copyright and Licensing

fast-relay-pagination is open source projects are licensed under the Apache 2.0 license.

fast-relay-pagination does not require you to assign the copyright of your contributions, you retain the copyright. fast-relay-pagination does require that you make your contributions available under the Apache license in order to be included in the main repo.

If appropriate, include the Apache 2.0 license summary at the top of each file along with the copyright info. If you are adding a new file that you wrote, include your name in the copyright notice in the license summary at the top of the file.

License Summary

You can copy and paste the Apache 2.0 license summary from below.

Copyright 2017 by Saeed Gharedaghi

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free