This hapi plugin makes it easy to connect to a RethinkDB database and run queries against it, from route handlers and anywhere else you can access the server
instance.
- Stores data in RethinkDB.
- Shares a database connection across routes.
- Decorates the server to make queries easier.
- Eliminates the repetitive use of
.run(conn)
. - Reconnects automatically on connection failures.
npm install hapi-perm
Register the plugin on your server to connect to your database and make the server.db(query)
helper function available.
const hapi = require('@hapi/hapi');
const perm = require('hapi-perm');
const r = require('rethinkdb');
const server = hapi.server();
const init = async () => {
await server.register({
plugin : perm,
options : {
password : process.env.DB_PASSWORD
}
});
server.route({
method : 'GET',
path : '/',
async handler(request) {
const { db } = request.server;
const tables = await db(r.tableList());
return tables;
}
});
await server.start();
console.log('Server ready:', server.info.uri);
};
init();
In the example above, r
is the RethinkDB library used to construct queries. Behind the scenes, this plugin connects to the database using the version of r
installed by your application. This gives you full control over the connection options.
Type: object
Passed directly to r.connect()
to configure the database connection. See the RethinkDB documentation for details.
For convenience, this plugin adds the following API to the hapi server instance.
Returns a Promise
for the query's completion. Can be used instead of query.run(conn)
. Useful to avoid needing a reference to the database connection. This is available as request.server.db(query)
inside of route handlers.
See our contributing guidelines for more details.
- Fork it.
- Make a feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request.
Go make something, dang it.