jsonwiz
v1.0.3
Published
An simple json db package
Readme
jsonWiz
jsonWiz is a lightweight, schema-based JSON database library inspired by Mongoose. It provides an easy-to-use API for defining schemas, inserting documents, querying, updating, and deleting documents.
Installation
Install the package using npm:
npm install jsonwizUsage
Setting Up
First, import and initialize jsonWiz with a file path for storing your JSON data.
const jsonWiz = require('jsonwiz');
const db = new jsonWiz('./data.json');Defining Schemas
Define schemas to structure your data. Each schema specifies the expected fields and their types.
const userSchema = {
name: 'string',
age: 'number',
email: 'string',
};
db.defineSchema('User', userSchema);Adding Documents
Insert new documents into the collection. The document must match the defined schema.
const newUser = {
name: 'Alice',
age: 25,
email: '[email protected]',
};
const addedUser = db.addDocument('User', newUser);
console.log('Added User:', addedUser);Querying Documents
Retrieve documents from a collection using a filter. The filter supports various operators.
const users = db.getDocuments('User', { age: { $gt: 20 } });
console.log('Users:', users);Updating Documents
Update existing documents in a collection based on a filter.
const updatedCount = db.modifyDocuments('User', { name: 'Alice' }, { age: 26 });
console.log('Updated Documents Count:', updatedCount);Deleting Documents
Remove documents from a collection based on a filter.
const deletedCount = db.removeDocuments('User', { age: { $lt: 30 } });
console.log('Deleted Documents Count:', deletedCount);Creating and Loading Backups
Create a backup of your database or load a backup from a file.
db.createBackup('./backup.json');
db.loadBackup('./backup.json');Advanced Features
Custom Validators
You can add custom validators to your schemas.
const extendedUserSchema = {
name: 'string',
age: 'number',
email: 'string',
isActive: {
type: 'boolean',
validate: value => {
if (typeof value !== 'boolean') {
throw new Error(`Expected boolean, got ${typeof value}`);
}
},
},
};
db.defineSchema('ExtendedUser', extendedUserSchema);Detailed Error Handling
All operations in jsonWiz include detailed error handling to ensure robust usage.
try {
db.addDocument('User', { name: 'Bob' }); // Missing required fields
} catch (error) {
console.error('Error:', error.message);
}Complete Example
Here is a complete example combining all the above operations:
const jsonWiz = require('jsonwiz');
const db = new jsonWiz('./data.json');
const userSchema = {
name: 'string',
age: 'number',
email: 'string',
};
db.defineSchema('User', userSchema);
const newUser = {
name: 'Alice',
age: 25,
email: '[email protected]',
};
const addedUser = db.addDocument('User', newUser);
console.log('Added User:', addedUser);
const users = db.getDocuments('User', { age: { $gt: 20 } });
console.log('Users:', users);
const updatedCount = db.modifyDocuments('User', { name: 'Alice' }, { age: 26 });
console.log('Updated Documents Count:', updatedCount);
const deletedCount = db.removeDocuments('User', { age: { $lt: 30 } });
console.log('Deleted Documents Count:', deletedCount);
db.createBackup('./backup.json');
db.loadBackup('./backup.json');This example demonstrates how to define a schema, add a document, query documents, update a document, delete a document, and manage backups using jsonWiz.
