
Security News
GitHub Actions Supply Chain Attack Puts Thousands of Projects at Risk
A compromised GitHub Action exposed secrets in CI/CD logs, putting thousands of projects at risk and forcing developers to urgently secure their workflows.
hapi-forest
Advanced tools
Provides REST handlers for mongoose models. Can also generate ready to use routes, for fast bootstrapping.
You can already play around with hapi-forest, but this is missing:
PUT
routenpm i --save hapi-forest # or yarn add hapi-forest if you prefer
// register hapi-forest
server.register({
register: require('hapi-forest'),
options: {
// add your models here for auto route generation
bootstrap: [ require('./models/user-model') ]
}
});
Take a look at the example
directory for a full example.
bootstrap: [ MongooseModel, MongooseModel, … ]
Will generate ready to use CRUD routes. hapi-forest will attempt to generate a basic joi schema based on the model.
You can use the forest
handler and define your own routes, instead of auto-generating
them. This is useful if you need more control over your endpoints or want custom validation.
The forest handler behaves differently based on your route definition.
GET
, POST
, PATCH
& PUT
are supported.
For routes like GET /collection/{name}
, the first URL parameter (name
in this case)
is used as the "id". It will be used in the condition of the mongoose query.
{id}
will translate to _id
for convenience.
Option | Description |
---|---|
model | required – The mongoose Model for this route. |
type | Overwrites the auto selected handler. Can be one of getOne, getAll, post, put, delete |
preQuery | A Function that gets passed the current mongoose query, that was generated by forest. |
getOne
Returns all documents from the specified model
.
select
.name
in this example) will be used to queryserver.route({
method: 'GET',
path: '/users/{name}',
handler: {
forest: {
model: User,
}
}
});
getAll
Returns all documents from the specified model
. The result will be streamed.
select
.filterByQuery
option allows basic filtering of the results by sending a
query with the request. (?group=nodejs&role=developer
)server.route({
method: 'GET',
path: '/users',
handler: {
forest: {
model: User,
select: 'firstName group lastName birthday',
}
}
});
post
Creates a new document.
server.route({
method: 'POST',
path: '/users',
handler: {
forest: {
model: User
}
}
});
put
Updates an existing document or creates a new document if it does not exist.
For now an update will not overwrite and existing document but only update it,
like patch
does.
allowUpsert: false
. PUT will behave like PATCH in that case.server.route({
method: 'PUT',
path: '/users/{name}',
handler: {
forest: {
model: User,
allowUpsert: true,
}
}
});
delete
Deletes a document.
name
in this example) will be used to queryserver.route({
method: 'DELETE',
path: '/users/{name}',
handler: {
forest: {
model: User,
}
}
});
FAQs
A hapi plugin to generate routes based on mongoose models
The npm package hapi-forest receives a total of 0 weekly downloads. As such, hapi-forest popularity was classified as not popular.
We found that hapi-forest demonstrated a not healthy version release cadence and project activity because the last version was released 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
A compromised GitHub Action exposed secrets in CI/CD logs, putting thousands of projects at risk and forcing developers to urgently secure their workflows.
Research
Security News
A malicious Maven package typosquatting a popular library is secretly stealing OAuth credentials on the 15th of each month, putting Java developers at risk.
Security News
Socket and Seal Security collaborate to fix a critical npm overrides bug, resolving a three-year security issue in the JavaScript ecosystem's most popular package manager.