All Projects → saeedghx68 → fast-relay-pagination

saeedghx68 / fast-relay-pagination

Licence: other
Improve relay pagination performance with find and limit

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to fast-relay-pagination

Create Graphql
Command-line utility to build production-ready servers with GraphQL.
Stars: ✭ 441 (+2350%)
Mutual labels:  relay, mongoose
Parse Server
API server module for Node/Express
Stars: ✭ 19,165 (+106372.22%)
Mutual labels:  relay, graphql-relay
koa-server
🗄️ GraphQL Back-end Server with Relay, Koa, MongoDB and Mongoose
Stars: ✭ 31 (+72.22%)
Mutual labels:  relay, mongoose
mongoose-aggregate-paginate-v2
A cursor based custom aggregate pagination library for Mongoose with customizable labels.
Stars: ✭ 103 (+472.22%)
Mutual labels:  pagination, mongoose
Mongoose Paginate V2
A cursor based custom pagination library for Mongoose with customizable labels.
Stars: ✭ 283 (+1472.22%)
Mutual labels:  pagination, mongoose
mongoose-graphql-pagination
GraphQL cursor pagination (Relay-like) for Mongoose models.
Stars: ✭ 29 (+61.11%)
Mutual labels:  pagination, mongoose
vite-plugin-relay
A vite plugin for Relay
Stars: ✭ 44 (+144.44%)
Mutual labels:  relay, graphql-relay
quick-crud
An easy CRUD operation based on Factory pattern with Mongoose.
Stars: ✭ 16 (-11.11%)
Mutual labels:  pagination, mongoose-pagination
caliban-extras
GraphQL pagination and filters with Caliban
Stars: ✭ 25 (+38.89%)
Mutual labels:  graphql-relay, graphql-pagination
express-mquery
Expose mongoose query API through HTTP request.
Stars: ✭ 37 (+105.56%)
Mutual labels:  pagination, mongoose
tempat-kontributor
Merupakan tempat bagi kalian untuk berkontributor bersama kami
Stars: ✭ 33 (+83.33%)
Mutual labels:  hacktoberfest-accepted
hacktoberfest 2021
This is a repository for anyone wishing to contribute to HacktoberFest 2021
Stars: ✭ 51 (+183.33%)
Mutual labels:  hacktoberfest-accepted
react-native-paginated-listview
A simple paginated react-native ListView with a few customization options
Stars: ✭ 14 (-22.22%)
Mutual labels:  pagination
aircnc
☕ Airbnb like (Air Coffee & Code) to booking spots for developers using ReactJS, React Native, Node.js and more.
Stars: ✭ 37 (+105.56%)
Mutual labels:  mongoose
uuid-mongodb
📇 Generates and parses MongoDB BSON UUIDs
Stars: ✭ 94 (+422.22%)
Mutual labels:  mongoose
mongoose-morgan
An npm package for saving morgan log inside MongoDB
Stars: ✭ 14 (-22.22%)
Mutual labels:  mongoose
mini-express-boilerplate
A minimal Express boilerplate with passport user authentication, mongoose and some security setup configured
Stars: ✭ 15 (-16.67%)
Mutual labels:  mongoose
lazyImages
基于ES6的轻量级,高性能,简便的图片懒加载 🐈
Stars: ✭ 43 (+138.89%)
Mutual labels:  lazy-loading
ng-nest-cnode
Angular 10 Front-End and Nestjs 7 framework Back-End build Fullstack CNode
Stars: ✭ 17 (-5.56%)
Mutual labels:  mongoose
Certificate-Generator-UI
This is the UI for an awesome Certificate Generator and this is a part of Hacktoberfest 2021.
Stars: ✭ 18 (+0%)
Mutual labels:  hacktoberfest-accepted

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.

Installation

NPM

$ npm install -g fast-relay-pagination

Usage

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

...
import {
  fetchConnectionFromArray
} from 'fast-relay-pagination'
...
export default{
  type: orderConnection.connectionType,
  args: {
    ...connectionArgs,
    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

Development

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

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].