I've created a tiny library which improves performance for GraphQL + Knex.
selectcolumns based on a query from clients
- Load relations without N+1 problem (pagination available!)
Currently only PostgreSQL is supported, but I'll support other RDBMS too if needed.
Creating a GraphQL service with a Relational Database is a hard thing. We should take care of:
- Performance for querying relations. N+1 problem will happen if you don't use Dataloader.
select *make your server slow, but hard to filter columns based on requests.
- Pagination. Dataloader pattern is hard to implement pagination without a hacky
unionor window functions.
row_number()window function to do it.
As a developer, I noticed that I'm doing the same thing again and again - so I convert my work into a library.
The syntax is like this:
Please try it! Any feedback is welcome.