Typed localStorage database powered by with JSON definition
- 📦 Tree-shakeable
- ⚡ Fast
- ✨ Lightweight
- ❤️ Strongly typed
npm i @reliutg/lsdb
no npm install needed!
<script type="module">
import Lsdb from 'https://cdn.skypack.dev/@reliutg/lsdb';
</script>
const lsdb = new Lsdb('dbname');
// Create multiple collections
lsdb.collection(['categories', 'articles']);
// Create single collection
lsdb.collection('categories');
lsdb.insert('categories', { title: 'Drinks' });
lsdb.insert('categories', { title: 'Dinner' });
lsdb.insert('categories', { title: 'Breakfast' });
lsdb.insert('articles', { title: 'Coffee', category: 'Drinks' });
lsdb.insertMany('categories', [{ title: 'Drinks' }, { title: 'Dinner' }, { title: 'Breakfast' }]);
Get single collection or all collection entries
lsdb.all();
// {categories: Array(2), articles: Array(0)}
lsdb.all('categories');
// [{title: 'Drinks'}, {title: 'Dinner'}, {title: 'Breakfast'}]
Get a list of documents
lsdb.find('categories', {
where: {
category: { $in: ['Drinks'] },
},
});
lsdb.find('articles', {
where: {
category: { $eq: 'Drinks' },
},
});
lsdb.find('articles', {
sort: {
field: 'title',
order: 'asc'
},
limit: 2,
skip: 1,
});
Field | Type | Description | Default | Required |
---|---|---|---|---|
where |
Object |
Filter by object | undefined |
false |
sort |
Object |
Sort by field name | undefined |
false |
limit |
number |
Limit number of results | undefined |
false |
skip |
number |
Skip number of results | 0 |
false |
Based on MongoDB query selectors
$eq
- Equal$in
- In$nin
- Not in$ne
- Not equal$gt
- Greater than$gte
- Greater than or equal$lt
- Less than$lte
- Less than or equal
Get a single document matching the query
lsdb.findOne('categories', {
where: {
_id: { $eq: id },
},
});
Update a single document matching the query
lsdb.update('categories', {
where: {
_id: { $eq: id },
},
});
Remove a single document matching the query
lsdb.delete('categories', {
where: {
_id: { $eq: id },
},
});
Thanks goes to these wonderful people (emoji key):
Aneesh Relan |
Zymantas Maumevicius 🚇 💻 |
Nitkalya Wiriyanuparb |
Connor Ruggles 🚇 💻 |
MAKSS 📖 |
Vasiliy Vanchuk 💻 |
Pablo 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!