ARK Database Wrapper
ark-database is a wrapper library designed for database access, specifically tailored for the `locator-kn/ark` application server. As of version 18.3.0, the package is deeply integrated into the `ark` ecosystem and requires `hapi` (>=9.x.x) as a peer dependency. The project appears to be abandoned, with its last commit in October 2017, and an open GitHub issue (dating back to 2016) indicates an unfinished transition from callback-based APIs to Promises. This leads to an inconsistent API surface where developers might encounter a mix of both patterns, necessitating direct source code inspection for clarity. Given its abandonment and tight coupling to an unmaintained server framework, it is not recommended for new projects. Its release cadence was irregular, with significant periods of inactivity.
Common errors
-
Error: Cannot find module 'ark-database'
cause The package `ark-database` is not installed or incorrectly referenced in your project.fixRun `npm install ark-database` to add it to your project's dependencies. -
npm WARN ark-database@18.3.0 requires a peer of hapi@>=9.x.x but none is installed.
cause The `hapi` peer dependency requirement for `ark-database` is not met in your project.fixInstall a compatible version of Hapi: `npm install hapi@^9.0.0`. Note that Hapi v9 is very old and potentially insecure for modern applications. -
TypeError: db.someMethod is not a function
cause Attempting to call a database method that does not exist or has an unexpected signature (e.g., expecting a Promise when it's callback-based).fixVerify the exact method name and its expected arguments (callback or Promise return) by consulting the library's source code, as documentation may be incomplete or outdated.
Warnings
- breaking The `ark-database` package and its core dependency, `locator-kn/ark`, have been abandoned since late 2017. There will be no further updates, bug fixes, or security patches.
- gotcha The API is inconsistent, with some methods using traditional Node.js callbacks while others might have been partially refactored to return Promises (as indicated by a long-standing open GitHub issue). This requires careful inspection of the source code for each method used.
- breaking The package has a strict `hapi` peer dependency ('>=9.x.x'). Running this package with newer or significantly older versions of Hapi, or with non-Hapi environments, will likely result in installation failures or runtime errors.
Install
-
npm install ark-database -
yarn add ark-database -
pnpm add ark-database
Imports
- Database
const Database = require('ark-database');
Quickstart
const Database = require('ark-database');
// Initialize the database wrapper for a specific tenant/user context
const db = new Database('alice');
// Example: Get a user by ID using a callback
db.getUserById('1234567890', function(err, res) {
if (err) {
console.error('Error fetching user:', err);
return;
}
console.log('User found:', res);
});
// Example: Create a new trip entry
const newTrip = {
id: 'trip-abc-123',
userId: 'alice',
destination: 'Wonderland',
startDate: new Date(),
status: 'planned'
};
db.createTrip(newTrip, function(err, res) {
if (err) {
console.error('Error creating trip:', err);
return;
}
console.log('Trip created:', res);
});
// Example: Delete a location by ID
db.deleteLocationById('12322456576567', function(err, res) {
if (err) {
console.error('Error deleting location:', err);
return;
}
console.log('Location deleted result:', res);
});