JSON API query parser for MongoDB/Mongoose queries.
Convert query object from any querystring parser to MongoDB/Mongoose queries.
npm install --save json-api-mongo-parser
// Input query object for the article resource
var query = {
fields: {
article: 'title,body', // Can be comma delimited string or Array of string
people: 'firstname,lastname',
comment: 'title,body'
},
sort: '-title,body,+created', // Can be comma delimited string or Array of string
page: {
offset: 2,
limit: 10
},
include: 'author,comments.tag,comments.author,comments.author.tag' // Can be comma delimited string or Array of string
}
var JSONAPIMongoParser = require(json-api-mongo-parser);
var jsonApiMongoParser = new JSONAPIMongoParser({
article: {
relationships: { // Declaring relationships with its type
author: 'people', // can be a string
comments: { // Or an object with extra options for population query
type : 'comment',
options: {
lean: true
}
},
}
},
comment: {
relationships: {
author: 'people',
tag: 'tag'
}
},
people: {
relationships: {
tag: 'tag'
}
}
});
// Parse
jsonApiMongoParser.parse('article', query);
Output mongo query for the article resource :
{
select: {
title: 1,
body: 1,
author: 1,
comments: 1
},
sort: {
title: -1,
body: 1,
created: 1
},
page: {
skip: 2,
limit: 10
},
populate: [{
path: 'author',
select: {
firstname: 1,
lastname: 1,
tag: 1
}
}, {
path: 'comments',
populate: [{
path: 'tag'
}, {
path: 'author',
populate: [{
path: 'tag'
}],
select: {
firstname: 1,
lastname: 1,
tag: 1
}
}],
select: {
title: 1,
body: 1,
author: 1,
tag: 1
},
options: {
lean: true
}
}]
}
json-api-mongo-parser only use ECMAScript 2015 (ES6) features supported natively by Node.js 4 and above (ECMAScript 2015 (ES6) | Node.js). Make sure that you have Node.js 4+ or above.