Simple library for storing datas on JSON files using models.
Using npm
:
npm install @burakbey/jsondb
Using yarn
:
yarn add @burakbey/jsondb
Create data
folder on root path.
// src/index.ts
import { join } from 'path';
import { JsonDB, Store } from '@burakbey/jsondb';
const store = new Store({
mainPath: join(__dirname, '../data')
});
new JsonDB(store);
Create users.json
in data
folder with []
content.
// data/users.json
[]
// src/models/User.ts
/* eslint-disable no-use-before-define */
import { Collection, Item } from '@burakbey/jsondb';
export class User extends Item<User> {
username: string;
password: string;
}
export const UserCollection = new Collection<User>(User, 'users');
// src/index.ts
import { User, UserCollection } from './models/User';
// Create new users
const admin = new User({
username: 'admin',
password: 'password'
});
const user = new User({
username: 'user',
password: 'password'
});
UserCollection.save(admin, user);
// Get all users
const users = UserCollection.find();
// Get all users with filter
const users = UserCollection.find(x => x.password === 'password');
// Get one user
const user = UserCollection.findOne(x => x.username === 'user');
// Update user
const user = UserCollection.findOne(x => x.username === 'user');
if (user) {
user.username = 'user-updated';
UserCollection.update(user);
}
// Delete user
const user = UserCollection.findOne(x => x.username === 'user-updated');
if (user) {
UserCollection.delete(user);
}
Create data
folder on root path.
// server/index.ts
import { JsonDB, Store } from '@burakbey/jsondb';
const store = new Store({
mainPath: 'data',
fetch(collection) {
const dataStr = LoadResourceFile(
GetCurrentResourceName(),
`${this.mainPath}/${collection.name}.json`
);
const data = JSON.parse(dataStr);
return data;
},
save(collection) {
SaveResourceFile(
GetCurrentResourceName(),
`${this.mainPath}/${collection.name}.json`,
JSON.stringify(collection.items, null, 4),
-1
);
}
});
new JsonDB(store);
...
JsonDB uses uuid
package for generating unique ids. If you want to change this to something else, you can use this example:
// src/index.ts
import { randomBytes } from 'crypto';
import { JsonDB, Store } from '@burakbey/jsondb';
const store = new Store({
mainPath: 'somePathHere',
getId() {
const ms = new Date().getTime().toString();
const id = crypto.randomBytes(8).toString('hex');
return `${ms}-${id}`;
}
});
new JsonDB(store);
...
If you find this project useful and would like to support me, you can do so by visiting my website.