45 lines
No EOL
1.7 KiB
Markdown
45 lines
No EOL
1.7 KiB
Markdown
# Map.db
|
|
|
|
###### A Map that stores data locally and loads it at startup. Written in TypeScript
|
|
|
|
### How does it work?
|
|
Map.db works just like the JavaScript built-in **Map**, with the same methods and functionalities, and in fact it uses itself a Map, but while the built-in Map only stores data in internal memory, this module **stores data locally in a file and loads it back in the Map at startup**.
|
|
|
|
The purpose of this module is to make the JavaScript built-in Map an actual **database**, and there comes the name `map.db`: a Map that can be used as a database.
|
|
|
|
The file structure is easily accessible and the data is stored in JSON format, allowing manual editing
|
|
|
|
![image](img.png)
|
|
|
|
![image](img2.png)
|
|
|
|
You also have the option to only use local storage without touching internal memory
|
|
|
|
### Differences
|
|
Although this module works in fact the same way as a Map, there are still some little differences between them, which are listed below:
|
|
> - `MapDB#set()` and `MapDB#delete()` return **promises**
|
|
> - `Map#size` in map.db is a **method** (`MapDB#size()`)
|
|
> - When a value is reassigned to a key, it is only saved in the Map but not in the actual save file, so you always have to **set the key/value pair with the new value**.
|
|
|
|
|
|
> Example:
|
|
|
|
```js
|
|
const MapDB = require('@galaxy05/map.db');
|
|
const mapdb = new MapDB('file.db'); // this is the save file's name + extension
|
|
|
|
async function sample() {
|
|
// assuming 'somekey' exists in the Map and has a value { cool: false }
|
|
const data = mapdb.get('somekey');
|
|
// reassigning the 'cool' property a new value
|
|
data.cool = true;
|
|
|
|
await mapdb.set('somekey', data);
|
|
// now 'somekey' has a new value { cool: true }
|
|
}
|
|
```
|
|
|
|
### Installation
|
|
With **npm**:
|
|
|
|
`npm i quickmap.db` |