![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
hapi-query-builder
Advanced tools
The hapi-query-builder hapi.js to get all query from url and create mongodb query.
Hapi-query-builder is a Hapi.js plugin. It is an ambitious attempt to create a kind of "URL" to "Mongoose/mongodb query" translator which provides a mongoose/mongodb query for GET API. It provides facilities to the developer to pass query params in URL and get the mongoos/mongodb query.
You can add the module to your Hapi using npm:
npm i hapi-query-builder --save
node: >= 18.x.x,
hapi: >= 21.x.x
In your Hapi apps server
object simply add hapi-query-builder
and also add
the routes for your API as described on the hapijs.com site.
const Hapi = require('@hapi/hapi');
(async () => {
try{
const server = await new Hapi.Server({
host: 'localhost',
port: 3000,
});
await server.register({
plugin: require('hapi-query-builder'),
options: {
defaultSelectField: '_id', // (optional)- Pass field name for default select if $select is empty
},
});
server.route({
method: 'GET',
path: '/query',
handler: function (request, h) {
return {
query: request.parsedQuery,
};
},
});
await server.start();
console.log('Server running at:', server.info.uri);
} catch (err) {
console.error(err);
process.exit(1);
}
})();
You just pass query in query params form Front-end in request.
const axios = require('axios');
const response = axios.get('/user?email=example@email.com&$limit=10&$skip=1&$sort=updatedAt|-1');
You can get mongoose query in handler in hapi.js
handler: function (request, h) {
query: request.parsedQuery,
};
// example response
{"where":{"email":"example@email.com"},"options":{"lean":true,"offset":1,"limit":10,"sort":{"updatedAt":"-1"}}}
Passing DB field name (Get all record where field match with value)
- GET /api-path?field1=value&field2=value&.....fieldn=value
- Ex /user?_id=5ff48a66070a2466418e6adc&email=example@email.com
- Result {"where":{"_id":"5ff48a66070a2466418e6adc","email":"example@email.com"},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing DB field name ($or condition for mongodb)
- GET /api-path?$or=field1|value,field2|value,.....,fieldn|value
- Ex /user?$or=_id|5ff48a66070a2466418e6adc,email|example@email.com
- Result {"where":{"$or":[{"_id":"5ff48a66070a2466418e6adc"},{"email":"example@email.com"}],"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing DB field name with space in $select
- GET /api-path?$select=field1 field2 field3..... fieldn
- Ex /user?$select=_id email title name
- Result {"where":{},"options":{"select":"_id email title name","lean":true,"offset":0,"limit":20,"sort":{}}}
Passing search text with DB fields name with pip operator in $q
- GET /api-path?$q=text|field1,field2....fieldn
- Ex /user?$q=amjesh|email,name
- Result {{"where":{"$or":[{"email":{"$regex":"amjesh","$options":"i"}},{"name":{"$regex":"amjesh","$options":"i"}}]},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing DB field name and search value with pip operator in $search
- GET /api-path?$search=field|value,field1|value,....fieldn|value
- Ex /user?$search=name|Amjesh,email|amjesh@example.com
- Result {"where":{"name":{"$regex":/Amjesh/}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing DB field name and search value with pip operator in $isearch
- GET /api-path?$isearch=field|value,field1|value,...fieldn|value
- Ex- /user?$isearch=name|Amjesh,email|amjesh@example.com
- Result {"where":{"name":{"$regex":/amjesh/,"$options":"i"}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing modal with comma separated in $populate
- GET /api-path?$populate=modal1,modal2,....modaln
- Ex /user?$populate=post,comment
- Result {"where":{},"options":{"populate":["post","comment"],"lean":true,"offset":0,"limit":20,"sort":{}}}
Passing DB field name for shorting in $sort
For Ascending pass value 1 or asc and
For Descending pass value -1 or desc any one
- GET /api-path?$sort=field1|1,field2|1
- Ex /user?$sort=updatedAt|1,_id|1
- Result {"where":{},"options":{"lean":true,"offset":0,"limit":20,"sort":{"updatedAt":"1","_id":"1"}}}
OR
- GET /api-path?$sort=field1|-1,field2|-1
- Ex /user?$sort=updatedAt|-1,_id|-1
- Result {"where":{},"options":{"lean":true,"offset":0,"limit":20,"sort":{"updatedAt":"-1","_id":"-1"}}}
Skip record for pagination in $skip(By default it's 0)
- GET /api-path?$skip=value
- Ex /user?$skip=1
- Result {"where":{},"options":{"lean":true,"offset":1,"limit":20,"sort":{}}}
Passing limit for total number of record for pagination in $limit.
You can pass defaultLimit in plugin option
- GET /api-path?$limit=value
- Ex /user?$limit=100
- Result {"where":{},"options":{"lean":true,"offset":0,"limit":100,"sort":{}}}
Get all records where the value does $in(In) or does not $nin(Not-in) match from values
- GET /api-path?field[$in]=value1,value2.....valuen
- Ex /user?id[$in]=10,11,12,13,14
- Result {"where":{"id":{"$in":["10","11","12","13","14"]}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Get all records where the value does $gt(Greater then) or does not $gte(Greater then equal to) match from value
- GET /api-path?field[$gt]=value
- Ex /user?comment[$gt]=100
- Result {"where":{"comment":{"$gt":"100"}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Get all records where the value does $lt(Less then) or does not $lte(Less then equal to) match from value
- GET /api-path?field[$lt]=value
- Ex /user?likes[$lt]=100
- Result {"where":{"likes":{"$lt":"100"}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
Get all records where the value does $ne(not equal to) match from value
- GET /api-path?field[$ne]=value
- Ex /user?archive[$ne]=true
- Result {"where":{"archive":{"$ne":true}},"options":{"lean":true,"offset":0,"limit":20,"sort":{}}}
FAQs
The hapi-query-builder hapi.js to get all query from url and create mongodb query.
We found that hapi-query-builder demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.