https://github.com/danivek/json-api-mongo-parser
JSON API (http://jsonapi.org/) query parser for MongoDB/Mongoose queries
https://github.com/danivek/json-api-mongo-parser
Last synced: about 1 year ago
JSON representation
JSON API (http://jsonapi.org/) query parser for MongoDB/Mongoose queries
- Host: GitHub
- URL: https://github.com/danivek/json-api-mongo-parser
- Owner: danivek
- License: mit
- Created: 2016-03-05T16:11:17.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-04-17T15:24:44.000Z (about 10 years ago)
- Last Synced: 2025-04-09T10:34:11.346Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 10.7 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# json-api-mongo-parser
[](https://travis-ci.org/danivek/json-api-mongo-parser)
[](https://coveralls.io/github/danivek/json-api-mongo-parser?branch=master)
JSON API query parser for MongoDB/Mongoose queries.
Convert query object from any querystring parser to MongoDB/Mongoose queries.
## Installation
```bash
npm install --save json-api-mongo-parser
```
## Usage
```javascript
// 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
}
```
```javascript
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 :
```javascript
{
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
}
}]
}
```
## Requirements
json-api-mongo-parser only use ECMAScript 2015 (ES6) features supported natively by Node.js 4 and above ([ECMAScript 2015 (ES6) | Node.js](https://nodejs.org/en/docs/es6/)). Make sure that you have Node.js 4+ or above.
## License
[MIT](https://github.com/danivek/json-api-mongo-parser/blob/master/LICENSE)