Nested lazily evaluated data. Somewhat like GraphQL, but without the explicit spec part.
This module allows you to define a tree-shaped structure that holds all accessible data, and query the data at different levels. By using on-demand resolvers (just functions, really), only the requested data will be computed.
const q3y = require('q3y');
const Post = require('./models/Post');
const {byKey} = q3y;
const $ = q3y({
me: {
posts: byKey('slug')(({userId}) => {
return Post.find({userId});
}),
},
});
$('/me/posts', {userId: 1}).then(console.log);
// {"/me/posts": {
// coolPost: {userId: 1, slug: "coolPost", id: 100, content: "..."}
// }}
$ npm install q3y
MIT © sgtlambda